Ich habe ein Wörterbuch als
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}
Ich möchte die keys
und values
in 2 numpy
Arrays aufteilen. Ich habe np.array(Samples.keys(),dtype=np.float)
ausprobiert, aber ich erhalte einen Fehler TypeError: float() argument must be a string or a number
Sie können np.fromiter
verwenden, um numpy
Arrays direkt aus den Dictionary-Schlüssel- und Werteansichten zu erstellen:
In Python 3:
keys = np.fromiter(Samples.keys(), dtype=float)
vals = np.fromiter(Samples.values(), dtype=float)
In Python 2:
keys = np.fromiter(Samples.iterkeys(), dtype=float)
vals = np.fromiter(Samples.itervalues(), dtype=float)
Unter Python 3.4 funktioniert Folgendes einfach:
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()))
Der Grund, warum np.array(Samples.values())
nicht genau angibt, was Sie in Python 3 erwarten, ist, dass in Python 3 die Methode values () eines Diktats eine iterative Ansicht zurückgibt, während sie in Python 2 eine tatsächliche Liste der Schlüssel zurückgibt.
keys = np.array(list(Samples.keys()))
funktioniert auch in Python 2.7 und macht Ihren Code versionsunabhängiger. Durch den zusätzlichen Aufruf von list()
wird dies jedoch geringfügig verlangsamt.
keys = np.array(dictionary.keys())
values = np.array(dictionary.values())
Weisen Sie einfach alle Werte einer Liste zu und konvertieren Sie sie dann in eine 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())
Oder, wenn Sie darüber iterieren möchten :
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)