239 votes

Initialisation de numpy matrix sur autre chose que zéro ou un

J'ai le code suivant:

 r = numpy.zeros(shape = (width, height, 9))
 

Il crée une matrice largeur x hauteur x 9 remplie de zéros. Au lieu de cela, j'aimerais savoir s'il existe une fonction ou un moyen de les initialiser à la place de NaN.

Y a-t-il? Sans avoir à recourir à faire manuellement des boucles et autres?

Merci

331voto

u0b34a0f6ae Points 14874

Vous aurez rarement besoin de boucles pour les opérations de numpy. Vous pouvez créer un tableau non initialisé et de céder à toutes les entrées à la fois:

>>> a = numpy.empty((3,3,))
>>> a[:] = numpy.NAN
>>> a
array([[ NaN,  NaN,  NaN],
       [ NaN,  NaN,  NaN],
       [ NaN,  NaN,  NaN]])


J'ai chronométré les alternatives a[:] = numpy.nan d'ici et d' a.fill(numpy.nan) affichés par Blaenk:

$ python -mtimeit "import numpy as np; a = np.empty((100,100));" "a.fill(np.nan)"
10000 loops, best of 3: 54.3 usec per loop
$ python -mtimeit "import numpy as np; a = np.empty((100,100));" "a[:] = np.nan" 
10000 loops, best of 3: 88.8 usec per loop

Les horaires montrent une préférence pour l' ndarray.fill(..) comme l'alternative plus rapide. Otoh, que, j'aime numpy la commodité de mise en œuvre de l'endroit où vous pouvez affecter des valeurs à l'ensemble de tranches à la fois, le code de l'intention est très claire.

27voto

Jorge Israel Peña Points 12602

Connaissez-vous numpy.nan ?

Vous pouvez créer votre propre méthode telle que:

 def nans(shape, dtype=float):
    a = numpy.empty(shape, dtype)
    a.fill(numpy.nan)
    return a
 

ensuite

 nans([3,4])
 

serait sortie

 array([[ NaN,  NaN,  NaN,  NaN],
       [ NaN,  NaN,  NaN,  NaN],
       [ NaN,  NaN,  NaN,  NaN]])
 

J'ai trouvé ce code dans un fil de liste de diffusion .

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X