Convertir de liste ou de tableau numpy d'un seul élément de flotter dans python
J'ai une fonction qui peut accepter une liste ou un tableau numpy.
Dans les deux cas, la liste/tableau a un seul élément (toujours). J'ai juste besoin de retour d'un flotteur.
Par exemple, j'ai pu recevoir:
list_ = [4]
ou le tableau numpy:
array_ = array([4])
Et je doit retourner
4.0
Ainsi, naturellement, (je dirais), j'utilise float(...) sur list_ et obtenez:
TypeError: float() argument must be a string or a number
Je fais la même chose pour array_ et cette fois, il fonctionne en répondant par "4.0". À partir de cela, j'apprends que Python liste ne peut pas être convertie en float de cette façon.
Sur la base du succès avec le tableau numpy conversion float cela m'approche:
float(np.asarray(list_))
Et cela fonctionne quand list_ est à la fois une liste Python et quand c'est un tableau numpy.
Question
Mais il semble que cette approche a une surcharge d'abord la conversion de la liste à un tableau numpy et puis flotter. En gros: Est-il une meilleure manière de faire ceci?
soit
float(list_[0])
ou float(''.join(list_))
OriginalL'auteur denvar | 2015-05-18
Vous devez vous connecter pour publier un commentaire.
Juste accéder au premier élément de la liste/tableau, à l'aide de l'indice de l'accès et de l'index 0:
Ce sera un
int
car c'est ce que vous avez inséré dans la première place. Si vous avez besoin d'un flotteur pour une raison quelconque, vous pouvez appelerfloat()
sur elle, puis:OriginalL'auteur poke
Vous pouvez utiliser le
ndarray.l'élément
méthode, comme dansa.item()
. C'est aussi l'équivalent denp.asscalar ()
. Ceci a l'avantage de travailler dans des situations avec des points de vue et superflu axes, tandis que les solutions ci-dessus sera actuellement en pause. Par exemple,Cela a aussi l'avantage de lancer une exception si le tableau n'est pas un singleton, alors que le
a[0]
approche silencieusement de procéder (ce qui peut conduire à des bugs de se faufiler à travers inaperçue).OriginalL'auteur Aaron Voelker
Utilisation numpy.asscalar pour convertir un tableau numpy /matrice par un scalaire valeur:
Il a construit dans la vérification des erreurs si il n'y a plus qu'un seul élément:
donne:
Remarque: l'objet passé en
asscalar
doit répondre àitem
, donc en passant une liste ou un tuple ne fonctionne pas.OriginalL'auteur Tom Hale
Je voudrais simplement utiliser,
input
est unndarray
du droit dtype, il n'y a pas de frais généraux, depuisnp.asarray
ne fait rien dans ce cas.input
est unlist
,np.asarray
permet de s'assurer que la sortie est du bon type.OriginalL'auteur rth