11
votes

Comment préparer une colonne à une matrice?

OK, imaginez que j'ai cette matrice: {{1,2}, {2,3}}, et je préférerais avoir {{4,1,2}, {5,2,3}}. C'est-à-dire que j'ai ajouté une colonne à la matrice. Y a-t-il un moyen facile de le faire?

Ma meilleure proposition est la suivante: P>

PrependColumn[vector_List, matrix_List] := 
 Outer[Prepend[#1, #2] &, matrix, vector, 1]


0 commentaires

4 Réponses :


7
votes

Je pense que le moins obscur est la manière suivante de cela est: xxx

en général, mapthread est la fonction que vous utiliserez le plus souvent pour Tâches comme celle-ci (je l'utilise tout le temps lors de l'ajout d'étiquettes à des tableaux avant de les former bien avec grille ), et il peut rendre les choses beaucoup plus claires et plus concises à utiliser prépendez au lieu de l'équivalent prépendez [# 1, # 2] & .


0 commentaires

7
votes

Je pense que le moyen le plus courant est de transposer, de préparer et de transposer à nouveau:

PrependColumn[vector_List, matrix_List] := 
  Transpose[Prepend[Transpose[matrix], vector]]


0 commentaires

11
votes

Etant donné que arayflatten a été introduit dans mathematica 6 la solution la moins obscurcée doit être xxx

une belle astuce consiste à remplacer tout bloc de matrice avec 0 vous donne un bloc nul de la bonne taille.


0 commentaires

0
votes

Le ... Absolument .. de loin ... la méthode la plus rapide pour ajouter ou préparer une colonne de mes tests de différentes méthodes sur le tableau RandomReal [100, {10 ^ 8,5}] (Enfants, n'essayez pas cela à la maison ... Si votre machine n'est pas conçue pour la vitesse et la mémoire, les opérations sur un tableau de cette taille sont garantis pour accrocher votre ordinateur) ... Est-ce: Ajoutez [TMP \ [transpose], plage @ long @ TMP] \ [transpose] . Remplacer Ajout avec Prepend à volonté.

La prochaine chose la plus rapide est la suivante: Tableau [TMP [[[[[[N]] ~ JOIN ~ {N}, {N, longueur @ TMP}] - presque deux fois plus lent.


1 commentaires

Apparemment, vous avez manqué la réponse dans Stackoverflow.com / Questions / 4270802 / Insertion-in-A-2D-List / ... . Utilisation de ArrayflaTEN semble être plus rapide.