[英]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.