1
これは非常に古典的な質問ですが、多くの記事を読んだ後、私はそれを元に戻すことにしました。 問題:Pythonのカウンター辞書からnd numpyの配列に
私は意味のある整数キーで、大規模なデータセットからのカウンター辞書を持っている、と整数出現:
co = Counter({8046: 1360, 10046: 1248, 11046: 1024})
そして、私は単には、基本的な整数配列で終わるしたい:
a = np.array([[8046,1360],[10046,1248],[11046,1024]])
この問題の特異性(または特異性の欠如は)私は整数キーを持っていることである、と私は構造化された配列を必要としません。次
dtype = dict(names = ['id','data'], formats=['i8','i8'])
array = np.fromiter(iter(co.items()), dtype=dtype)
は
a = [(8046, 1360) (10046, 1248) (11046, 1024)]
で終わる、非常に満足ではない、それは、DTYPEの問題だけですか?どうもありがとう!
はい!私はこれらのタイプとイテレータで自分を失って、基本を忘れてしまった。そのため、np.array(list())の組み合わせはdtypesを指定することを避けます。今、私はなぜ 'np.fromiter'がそれほど硬直しているのか見逃していますが、私は何かが欠落していると思います。ありがとう@kennytm。 – Etienne
私が間違っていない場合は、 'list(co.items())の代わりに単純な' co.items() 'で十分です。 – JRodDynamite
@JRodDynamite 'np.array(co.items())'は2D配列の代わりにオブジェクトの配列を作成します。 'array(dict_items([(8046、1360)、(10046、1248)、(11046,1024)])、dtype = object)' – kennytm