J'ai un ndarray
dans python avec un dtype
de float64
. Je voudrais convertir le tableau en tableau Comment devrais-je faire cela?
int()
ne fonctionnera pas, car il dit qu'il ne peut pas le convertir en scalaire. Changer le champ dtype
lui-même ne fonctionne évidemment pas, car les octets réels n'ont pas changé. Je n'arrive pas à trouver quoi que ce soit sur Google ou dans la documentation. Quelle est la meilleure façon de le faire?
Utilisation .astype
.
>>> a = numpy.array([1, 2, 3, 4], dtype=numpy.float64)
>>> a
array([ 1., 2., 3., 4.])
>>> a.astype(numpy.int64)
array([1, 2, 3, 4])
Voir le documentation pour plus d'options.
Il existe également une discussion très utile sur la conversion du tableau à la place, Conversion de type à la place d'un tableau NumPy . Si vous êtes préoccupé par la copie de votre tableau (ce que fait astype()
]), vérifiez le lien.
Bien que astype
soit probablement la "meilleure" option, il existe plusieurs autres moyens de le convertir en tableau entier. J'utilise ce arr
dans les exemples suivants:
>>> import numpy as np
>>> arr = np.array([1,2,3,4], dtype=float)
>>> arr
array([ 1., 2., 3., 4.])
int*
fonctions de NumPy>>> np.int64(arr)
array([1, 2, 3, 4])
>>> np.int_(arr)
array([1, 2, 3, 4])
*array
fonctionne eux-mêmes:>>> np.array(arr, dtype=int)
array([1, 2, 3, 4])
>>> np.asarray(arr, dtype=int)
array([1, 2, 3, 4])
>>> np.asanyarray(arr, dtype=int)
array([1, 2, 3, 4])
astype
(qui a déjà été mentionnée mais pour des raisons de complétude):>>> arr.astype(int)
array([1, 2, 3, 4])
Notez que le fait de passer int
en tant que type type à astype
ou array
donnera par défaut un type entier par défaut qui dépend de votre plate-forme. Par exemple, sous Windows, il s'agira de int32
, sur Linux 64 bits avec 64 bits Python c'est int64
. Si vous avez besoin d'un type entier spécifique et que vous souhaitez éviter "l'ambiguïté" de la plate-forme, vous devez utiliser les types NumPy correspondants, tels que np.int32
ou np.int64
.