簡體   English   中英

通過使用numpy數組作為鍵以高效的方式檢索python字典值

[英]Retrieve python dictionary value by using numpy array as a key in time efficient way

我正在使用python 3.6。我有一個numpy數組,假設a。它是這種格式

array(['0', '1', '2', ..., '3304686', '3304687', '3304688'],
      dtype='<U7')

我還有另一本字典b = {1:'012',2:'023',3:'045',..... 3304688:'01288'}

我想通過提供a的值作為b的鍵來檢索b的每個值並將其存儲在另一個numpy數組中。 我打算以這種方式嘗試

    z_array = np.array([])  

    for i in range(a.shape[0]):
        z=b[i]        
        z_array=np.append(z_array,z)

但是看着a的形狀,我感覺這將非常耗時。 您能否建議我一些省時的替代方法?

您可以使用np.frompyfunc ,請注意,這將創建一個對象數組。

b = {str(i): i**3 for i in range(10**7)}
a = [str(i) for i in range(10**7)]
c = np.frompyfunc(b.__getitem__, 1, 1)(a)

要么

c = np.frompyfunc(b.get, 1, 1)(a)

None指示缺少的鍵。

在具有10,000,000個項目和許多查找的示例中,只需一兩秒鍾。 (創建ab需要更長的時間)

暫無
暫無

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

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