J'ai deux matrices 2D chacune des dimensions 831 x 918. Si:
matrice A = [[[A (1,1), A (1,2), ...], [A (2 , 1), A (2,2) ...]] Matrice B = [[[B (1,1), B (1,2), ...], [B (2,1), B (2,2) ...]] P>
Je voudrais combiner les deux matrices pour créer une liste avec ((A (1,1), B (1,1)), (A (1,2), B (1,2)), ...) . P>
Quelle est la meilleure façon de faire cela? J'ai essayé d'utiliser les fonctions zip et list comme indiqué ci-dessous: p> Cependant, cela renvoie une liste de 831 éléments longs, mais chaque position sur la liste a beaucoup d'éléments. Je veux seulement avoir un point unique (x, y) pour chaque élément de la liste, pas un tableau entier. P> Merci pour toute aide.
Edit: comme exemple de base, pour:
A = [[1,2,3], [4,5,6], [7,8,9]]
B = [[10,11,11], [13,14,15], [16,17,18]] P> Je veux obtenir une liste à la tracé de ((1,10), (2,11), (3,12), ...). P> p>
3 Réponses :
Si vous avez deux tableaux de la même forme comme: Vous pouvez effectuer cette opération pour obtenir une liste avec les paires d'éléments dans la même position P> [(a_, b_) for a_, b_ in zip(a.flatten(), b.flatten())]
Vous pouvez également remplacer le zip avec np.stack ((aplatten (), b.flatten ()), axis = -1) code>
Ouais, et vous devriez remodeler plus tard, mais ça a l'air plus propre, merci
Si les deux sont des tableaux numpus, vous pouvez utiliser des fonctions et des méthodes pure numpy:
import numpy as np A = np.arange(1, 10).reshape(3,3) B = np.arange(10, 19).reshape(3,3) pairs = np.stack((A,B), axis=2).reshape(-1, 2) """ array([[ 1, 10], [ 2, 11], [ 3, 12], [ 4, 13], [ 5, 14], [ 6, 15], [ 7, 16], [ 8, 17], [ 9, 18]]) """
Vous pouvez y parvenir comme ... Convertissez A et B sur l'objet NP de la forme = (813 918), puis
result = np.vstack((A[0],B[0])).T
Pouvez-vous partager un exemple spécifique et une sortie attendue?
a (2,2) code> apparaît deux fois dans matrice A; Est-ce une faute de frappe?
Typo fixe et exemple avec une sortie attendue ajoutée. Merci.