web-dev-qa-db-ja.com

numpy配列を分離するための辞書のキーと値

私は辞書を持っています

_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}
_

keysvaluesを2つのnumpy配列に分離したいと思います。 np.array(Samples.keys(),dtype=np.float)を試しましたが、エラーが発生しましたTypeError: float() argument must be a string or a number

19
VeilEclipse

np.fromiterを使用して、辞書のキーと値のビューからnumpy配列を直接作成できます。

python 3:

keys = np.fromiter(Samples.keys(), dtype=float)
vals = np.fromiter(Samples.values(), dtype=float)

python 2:

keys = np.fromiter(Samples.iterkeys(), dtype=float)
vals = np.fromiter(Samples.itervalues(), dtype=float)
19
ankostis

python 3.4の場合、以下は単純に機能します。

_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()))
_

np.array(Samples.values())がPython 3で期待する結果を提供しない理由は、Python 3で、values()メソッドがdictは反復可能なビューを返しますが、Python 2では、キーの実際のリストを返します。

keys = np.array(list(Samples.keys()))は実際にはPython 2.7でも動作し、コードをバージョンにとらわれないようにします。ただし、list()への追加の呼び出しにより、速度が低下しますわずかに。

10
pratyaksh
keys = np.array(dictionary.keys())
values = np.array(dictionary.values())
0
1478963

すべての値をリストに割り当て、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())

または、もし それを繰り返したい場合

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)
0
A.J. Uppal