J'ai besoin de créer un tableau NumPy de longueur n
dont chaque élément est v
.
Y a-t-il quelque chose de mieux que :
a = empty(n)
for i in range(n):
a[i] = v
Je sais. zeros
y ones
fonctionnerait pour v = 0, 1. Je pourrais utiliser v * ones(n)
mais il ne fonctionnera pas lorsque serait beaucoup plus lent.v
es None
et aussi
1 votes
Sur mon ordinateur, pour le cas 0, en utilisant
a = np.zeros(n)
dans la boucle est plus rapide quea.fill(0)
. Cela va à l'encontre de ce à quoi je m'attendais puisque je pensais quea=np.zeros(n)
aurait besoin d'allouer et d'initialiser une nouvelle mémoire. Si quelqu'un peut expliquer cela, je l'apprécierais.0 votes
Vous ne pouvez pas mettre None dans un tableau numpy, car les cellules sont créées avec un type de données spécifique alors que None a son propre type et est en fait un pointeur.
0 votes
@Camion Oui, je le sais maintenant :) Bien sûr.
v * ones(n)
est toujours horrible, car elle utilise la multiplication coûteuse. Remplacer*
con+
cependant, etv + zeros(n)
s'avère être étonnamment bon dans certains cas ( stackoverflow.com/questions/5891410/ ).0 votes
Max, au lieu de créer un tableau avec des zéros avant d'ajouter v, il est encore plus rapide de le créer vide avec
var = np.empty(n)
puis de le remplir avec 'var[ :] = v'. (au fait,np.full()
est aussi rapide que ça)