在numpy数组中使用字典?

13

我如何访问数组内部的字典?

import numpy as np
x = np.array({'x': 2, 'y': 5})

我的最初想法:

x['y']

索引错误:不是有效的索引

x[0]

索引错误:数组的索引过多

3个回答

20
你有一个对象dtype的0维数组。制作这个数组可能是一个错误,但如果你仍想使用它,你可以通过用不含索引的元组索引该数组来提取字典:

您拥有一个对象dtype的零维数组。制作这个数组可能是一个错误,但如果您仍想使用它,您可以通过用不带索引的元组对数组进行索引来提取字典:

x[()]

或通过调用数组的 item 方法:

x.item()

好的,Nvidia Modulus使用这种numpy数组来导出模型的输出。这非常有用。 - Prakhar Sharma
在使用np.savez_compressed保存一些变量(包括一个字典)并重新加载它们后,我最终得到了一个0维数组。我和提问者一样感到困惑,所以这仍然是一个相关的答案,谢谢! - JPhibs

5
如果在数组赋值中添加方括号,则会得到一个一维数组。
x = np.array([{'x': 2, 'y': 5}])

那么你可以使用:

x[0]['y']

我相信这会更有意义。


0
# json & dict -> tuple 
djson = json.loads('{"Foo": "bar", "Loreum": "ipsum"}') # json -> dict
dict2tupls = []
n = 0
for i in djson.items():
    dict2tupls += [i]

make_nparray = np.array(dict2tupls)

print(dict2tupls)
print(make_nparray)
print(make_nparray.shape)

字典:

[('Foo','bar'),('Loreum','ipsum')]

nparray:

[['Foo','bar'],['Loreum','ipsum']]

nparray维度:

(2, 2)

这是我想出的解决方案,将键值对转换为元组。根据需要处理维度。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接