J'utilise pour concaténer mes baies numpues de forme arbitraire pour rendre mon Code Nettoyant, mais il me semble assez difficile de me démarquer sur une manière pythoneque.
Permet de prendre en compte un tableau 4 dimensions x (donc Je cherche quelque chose de plus lisible, car il est gênant d'avoir tant de ":" et tout changement dans les dimensions de x nécessiterait une réécriture d'une partie de mon code. Quelque chose de magie comme p> existe une méthode numpue qui me permet d'iTerrer toute dimension arbitraire d'un tableau? P> p> len (x.shape) = 4 code>), et que l'index que je veux itérer est 2, la solution naïve que j'utilise habituellement est quelque chose comme p>
3 Réponses :
Une solution possible consiste à utiliser un dict ().
Ce que vous pouvez faire est: p>
Je ne connais aucun moyen standard de le faire. Quoi qu'il en soit, votre tour est bon. Nous pouvons l'élaborer un peu et nous obtenons une implémentation de la "Fonction magique" que vous recherchez:
def magic_function(x, n):
slices = [slice(w) for w in x.shape]
for i in range(x.shape[n]):
slices[n] = i
z = x[tuple(slices)]
yield z
Vous pouvez déplacer temporairement l'axe désiré à l'avant, puis itérer sur le tableau. Ensuite, vous déplacez l'axe de l'axe:
x = np.moveaxis(x, 2, 0) x = np.array([my_operation(sub_x) for sub_x in x]) x = np.moveaxis(x, 0, 2)
L'itération sur tout axe est sous-optimale. Le compilé rapide
ufuncs code> fournir unaxis code> ouaxes code> de sorte que vous n'avez pas besoin de manière explicite. Il existe des fonctions «Appliquer ...», mais ce sont des outils de commodité et non des améliorateurs de performance. Afin de réaliser beaucoup de généralité, le code Python a tendance à être assez long. Donc, votre propre 'Magic_function', réglé sur votre propre sous-ensemble d'itérations possibles est le meilleur choix.