簡體   English   中英

將列表字典轉換為1D numpy數組

[英]Turn dictionary of lists into a 1D numpy array

我有一個Python 3字典,包含很長的列表(每個3000萬個整數)。 我想將所有這些列表拼接成一個numpy數組。 我怎樣才能有效地做到這一點?

下列

np.array(my_dict.values())

似乎不起作用(我得到array(dict_values([[...], [....]))而不是平坦的1D numpy數組)。

from itertools import chain
import numpy as np
chn = chain.from_iterable(d.values())
np.array(list(chn))

如果你正在尋找一個平坦的1d數組,你可以使用np.concatenate

>>> d = {'a': [1, 2, 3, 4, 5], 'b': [1, 2, 3, 4, 5], 'c': [1, 2, 3, 4, 5]}
>>> np.concatenate(list(d.values()))
array([1, 2, 3, 4, 5, 1, 2, 3, 4, 5, 1, 2, 3, 4, 5])

提前分配numpy數組:

my_dict = {0:[0,3,2,1], 1:[4,2,1,3], 2:[3,4,2,1]}
array = numpy.ndarray((len(my_dict), len(my_dict.values()[0]))

然后你可以將它們插入到數組中,如下所示:

for index, val in enumerate(my_dict.values()):
    arr[index] = val
>>> arr
array([[ 0.,  3.,  2.,  1.],
       [ 4.,  2.,  1.,  3.],
       [ 3.,  4.,  2.,  1.]])

為了獲得基於鍵的有序串聯:

np.array([d[k] for k in sorted(d.keys())]).flatten()

如果您不需要任何基於按鍵的訂單,@ Padraic Cunningham的方法是基於我的時間最快的...

嘗試這個

list(my_dict.values())


(評論補充)

dict.values()返回view而不是列表。 請參考這里

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM