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]
4 Réponses :
Je pense que le moins obscur est la manière suivante de cela est: en général, mapthread code> 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 code>), et il peut rendre les choses beaucoup plus claires et plus concises à utiliser
prépendez code> au lieu de l'équivalent
prépendez [# 1, # 2] & code>. p> p>
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]]
Etant donné que une belle astuce consiste à remplacer tout bloc de matrice avec arayflatten code> a été introduit dans mathematica 6 la solution la moins obscurcée doit être
0 code> vous donne un bloc nul de la bonne taille. P> p>
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 La prochaine chose la plus rapide est la suivante: RandomReal [100, {10 ^ 8,5}] code> (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] code>.
Remplacer
Ajout code> avec
Prepend code> à volonté. p>
Tableau [TMP [[[[[[N]] ~ JOIN ~ {N}, {N, longueur @ TMP}] code> - presque deux fois plus lent. P>
Apparemment, vous avez manqué la réponse dans Stackoverflow.com / Questions / 4270802 / Insertion-in-A-2D-List / ... . Utilisation de ArrayflaTEN code> semble être plus rapide.