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