0
votes

Comment itérez une matrice numpue à un axe donné?

J'ai un ndarray de forme, disons xxx

et j'ai des grappes nb de données de forme (na, nc)

je voudrais remplir "my_array "Avec mes grappes de données comme suit: xxx

mais je voudrais le faire pour tout axe arbitraire pour un ensemble de données de forme arbitraire. Comment ferais-je cela?

** Modifier ** Quelqu'un a souligné une ambiguïté dans ma question. Ci-dessous est un exemple de code de ce que je sais faire, menant à ce que je ne sais pas.

Ce que je sais: xxx

générique nous pourrait considérer xxx

à partir de là, je voudrais remplir mon_array avec my_bits le long de l'axe nj. Comment ferais-je cela? Je regarde la fonction NDiter, mais je ne suis pas sûr de quoi faire avec ça.


0 commentaires

3 Réponses :


0
votes

Il y a un problème avec les dimensions ici. Si je l'ai bien compris, my_array [:, 0,:] code> est la même dimension que my_bits code>. Donc, l'affectation doit être effectuée comme ceci:

import numpy as np

Na = 2
Nb = 2
Nc = 2
my_array = np.zeros((Na, Nb, Nc))

my_bits = np.ones((Na, Nc))

print('my_array before', my_array)

for b in range(Nb):
  my_array[:, b, :] = my_bits

print('my_array after', my_array)


1 commentaires

Merci d'avoir souligné une ambiguïté dans ma question. Je vais le réparer dès que j'aurai fini avec ce commentaire. my_bits est une liste (tuple, tableau, tout igréable) des bits de données de dimension (NA, NC).



0
votes

Je pense que vous voudrez peut-être que vous voudrez peut-être Numpy. transposer xxx


0 commentaires

0
votes

en utilisant transpose code> pour déplacer l'axe d'itération à une position connue, à l'avant ou en dernier, est effectué dans certaines fonctions numpy code>.

Une autre approche consiste à construire un SLICE CODE> Objet et itérer cela. p> xxx pré>

pour un autre axe p> xxx pré>

dans ce cas idx code> varie comme: p >

In [61]: np.s_[:,3,:]
Out[61]: (slice(None, None, None), 3, slice(None, None, None))


0 commentaires