J'ai un dictionnaire comme
Samples = {5.207403005022627: 0.69973543384229719, 6.8970222167794759: 0.080782939731898179, 7.8338517407140973: 0.10308033284258854, 8.5301143255505334: 0.018640838362318335, 10.418899728838058: 0.14427355015329846, 5.3983946820220501: 0.51319796560976771}
Je veux séparer les keys
et values
en 2 tableaux numpy
. J'ai essayé np.array(Samples.keys(),dtype=np.float)
mais j'obtiens une erreur TypeError: float() argument must be a string or a number
Vous pouvez utiliser np.fromiter
pour créer directement des tableaux numpy
à partir des vues de clé et de valeurs de dictionnaire:
En python 3:
keys = np.fromiter(Samples.keys(), dtype=float)
vals = np.fromiter(Samples.values(), dtype=float)
En python 2:
keys = np.fromiter(Samples.iterkeys(), dtype=float)
vals = np.fromiter(Samples.itervalues(), dtype=float)
Sur python 3.4, ce qui suit fonctionne simplement:
Samples = {5.207403005022627: 0.69973543384229719, 6.8970222167794759: 0.080782939731898179, 7.8338517407140973: 0.10308033284258854, 8.5301143255505334: 0.018640838362318335, 10.418899728838058: 0.14427355015329846, 5.3983946820220501: 0.51319796560976771}
keys = np.array(list(Samples.keys()))
values = np.array(list(Samples.values()))
La raison pour laquelle np.array(Samples.values())
ne donne pas ce que vous attendez dans Python 3 est que, dans Python 3, la méthode values () d'un dict renvoie une vue itérable, alors que dans Python 2, elle renvoie la liste réelle des clés.
keys = np.array(list(Samples.keys()))
fonctionnera également dans Python 2.7 et rendra votre code plus agnostique. Mais l'appel supplémentaire à list()
le ralentira légèrement.
keys = np.array(dictionary.keys())
values = np.array(dictionary.values())
Attribuez simplement toutes les valeurs à une liste, puis convertissez-les en np.array()
.
import numpy as np
Samples = {5.207403005022627: 0.69973543384229719, 6.8970222167794759: 0.080782939731898179, 7.8338517407140973: 0.10308033284258854, 8.5301143255505334: 0.018640838362318335, 10.418899728838058: 0.14427355015329846, 5.3983946820220501: 0.51319796560976771}
keys = np.array(Samples.keys())
vals = np.array(Samples.values())
Ou, si vous voulez itérer dessus :
import numpy as np
Samples = {5.207403005022627: 0.69973543384229719, 6.8970222167794759: 0.080782939731898179, 7.8338517407140973: 0.10308033284258854, 8.5301143255505334: 0.018640838362318335, 10.418899728838058: 0.14427355015329846, 5.3983946820220501: 0.51319796560976771}
keys = vals = []
for k, v in Samples.items():
keys.append(k)
vals.append(v)
keys = np.array(keys)
vals = np.array(vals)