J'ai un tableau numpy avec rank = 4. Supposons qu'il ressemble à ceci:Tableaux multidimensionnels Numpy et accès inversé
np.shape(my_array)
(10,5,25,50)
J'ai aussi une liste de 10 valeurs, telles que
x = np.arange(10)
Je voudrais être en mesure de tracer x
contre le premier axe de my_array
pour chaque valeur, qui est, je voudrais faire:
for axis2_index in xrange(5):
for axis3_index in xrange(25):
for axis4_index in xrange(50):
plt.plot(x,my_array[:,axis2_index,axis3_index,axis4_index])
Mais bien sûr, je veux le faire sous une forme numpy, sans for
boucles. Cela fait longtemps que je me bats avec ça, mais je n'arrive toujours pas à trouver un moyen facile de le faire.
En d'autres termes, je voudrais pouvoir accéder au my_array
pour obtenir, par exemple, une matrice de vecteurs 5x25x50 de 10 chacun, correspondant au premier axe my_array
. J'ai aussi essayé np.reshape
, mais cela change l'ordre des éléments de telle sorte que je ne peux pas l'utiliser.
N'est-ce pas un très grand nombre de lignes? Dans ce cas, ce n'est pas la vitesse des for-loops dont vous avez besoin, mais la vitesse de rendu. Cependant, je vous suggère de regarder 'np.broadcast_arrays'. – mdurant
Merci @mdurant. Ceci est juste un exemple, et je voudrais réellement faire quelques calculs et accéder à tous ces nombres: ils sont le résultat du calcul d'une fonction sur une grille de 3 paramètres différents, et la dimension supplémentaire est la sortie de la fonction, qui lui-même est un tableau (un spectre). J'ai vérifié 'np.broadcast_arrays', mais je n'arrive toujours pas à voir comment je pourrais utiliser ça ... un tutoriel avec un cas similaire que je pourrais regarder? le doc numpy ne me suffisait pas pour voir comment le faire. –