如果我有一个像这样的字典:sam = {1:np.array([1,2,3,4]), 2:np.array([2,4,6,8]) }我如何用这样的字典值制作一个numpy数组?arr = ([[1,2,3,4],
[2,4,6,8]])我以为np.fromiter(sam.values(), dtype=np.int16)可能有用,但由于它的dtype而不起作用。是否有任何功能可以执行此操作,而不是使用for或任何循环?
2 回答

慕妹3146593
TA贡献1820条经验 获得超9个赞
您可以像这样堆叠字典的值:
arr = np.stack(sam.values())
>>> arr
array([[1, 2, 3, 4],
[2, 4, 6, 8]])

叮当猫咪
TA贡献1776条经验 获得超12个赞
除非您使用的是Python 3.7+,否则不认为字典是有序的。因此,这很麻烦,但可能。想法是dict.items按键排序以给出元组列表,然后提取值。
from operator import itemgetter as iget
res = np.array(list(map(iget(1), sorted(sam.items(), key=iget(0)))))
array([[1, 2, 3, 4],
[2, 4, 6, 8]])
添加回答
举报
0/150
提交
取消