簡體   English   中英

我可以從字典鍵數組創建字典值的 numpy 數組嗎?

[英]Can I create a numpy array of dictionary values from an array of dictionary keys?

假設我有一本字典:

d = {'a': 1, 'b': 2, 'c': 3, 'd': 4, 'e': 5}

給定一個 numpy 鍵數組**,例如['a' 'c' 'e'] ,是否有一種簡單的方法來創建相應值的 numpy 數組,例如[1 3 5]

** 出於我使用它的上下文的原因,我更喜歡輸入/輸出 numpy 數組。 類似的事情顯然可以用列表來完成:

keys = ['a', 'c', 'e']
values = []

for k in keys:
    values.append(d[k])

print(values)
[1, 3, 5]

但我想知道是否有一種內置的方法可以在 numpy.js 中做這樣的事情。

您可以使用結構化數組np.in1d來做到這np.in1d

import numpy as np

d = {'a': 1, 'b': 2, 'c': 3, 'd': 4, 'e': 5}

# Create structured array (modify formats, names as necessary):
names = ['key', 'data']  
formats = ['U10', 'i4']                                                                        
dtype = dict(names = names, formats = formats)

arr = np.array(list(d.items()), dtype=dtype)

# >>> arr
# array([('a', 1), ('b', 2), ('c', 3), ('d', 4), ('e', 5)],
#       dtype=[('key', '<U10'), ('data', '<i4')])

# use np.in1d to get your keys:

keys = ['a', 'c', 'e']

values = arr[np.in1d(arr['key'], keys)]['data']                                                

# >>> values
# array([1, 3, 5], dtype=int32)

如果您只需要將 numpy 數組作為輸入和輸出,但不堅持使用 numpy函數來處理它們,則可以對列表理解的結果使用numpy.array()

import numpy as np

d = {'a': 1, 'b': 2, 'c': 3, 'd': 4, 'e': 5}
keys = np.array(['a', 'c', 'e'])
values = np.array([d[k] for k in keys])

print(values)

暫無
暫無

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

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