2009-11-13 4 views

Répondre

6

hstack et vstack ne pas modifier le nombre de dimensions des tableaux: ils simplement les mettre « côte à côte ». Ainsi, la combinaison de tableaux bidimensionnels crée un nouveau tableau bidimensionnel (pas un tableau 3D!).

Vous pouvez faire ce que Daniel a suggéré (utiliser directement numpy.array([d1, d2])).

Vous pouvez alternativement convertir vos tableaux de tableaux 3D avant de les empiler, en ajoutant une nouvelle dimension à chaque tableau:

d3 = numpy.vstack([ d1[newaxis,...], d2[newaxis,...] ]) # shape = (2, 18, 18) 

En fait, d1[newaxis,...].shape == (1, 18, 18), et vous pouvez empiler les deux tableaux 3D directement et obtenir le nouveau Tableau 3D (d3) que vous vouliez.

+0

:) merci EOL, maintenant je vais en savoir plus sur vstack, hstack – vernomcrp

+1

'np.vstack ([a [np.newaxis, ...], b [np.newaxis, ...]])' travaillé comme charme ! Merci. – thepunitsingh

21

Il suffit de faire d3 = array([d1,d2]) semble fonctionner pour moi:

>>> from numpy import array 
>>> # ... create d1 and d2 ... 
>>> d1.shape 
(18,18) 
>>> d2.shape 
(18,18) 
>>> d3 = array([d1, d2]) 
>>> d3.shape 
(2, 18, 18) 
+0

oh son travail, merci Daniel :) – vernomcrp

+1

J'ai une question similaire. Si j'ai déjà obtenu le d3 avec la forme (2,18,18) et je veux ajouter un autre tableau de 2 d4 (18x18) dans d3 pour faire le tableau 3-d (3,18,18). Que devrais-je faire? –

+1

Vous simplement 'vstack (d3, d4 [np.newaxis, ...])', comme dans ma réponse. – EOL

Questions connexes