我已通读文档,但无法弄清楚如何使用 numpy 创建字符串和整数的结构化数组。我的问题的简短版本如下:
foo = [['asd', 1, 2],['bgf',2,3]]
bar = np.array(foo, dtype=['S10', 'i4','i4'])
然后我希望将 bar[:,0]
作为字符串数组以及 bar[:,1]
和 bar[:,2 ]
作为整数数组。
不幸的是,这会给出一个TypeError:数据类型无法理解
。我尝试了许多其他方法来让它工作,但找不到任何直观的东西。
目前,我只是在执行 bar = np.array(foo)
,然后每当我调用第二列或第三列中的值时都会转换为整数,这远非理想。
如何从列表 foo
列表中创建我想要的结构体数组 bar
?
最佳答案
这是创建 structured array 的一种方法:
>>> foo = [('asd', 1, 2),('bgf',2,3)]
>>> bar = np.array(foo, dtype='S10,i4,i4')
>>> bar
array([('asd', 1, 2), ('bgf', 2, 3)],
dtype=[('f0', 'S10'), ('f1', '<i4'), ('f2', '<i4')])
>>> bar['f0']
array(['asd', 'bgf'],
dtype='|S10')
>>> bar['f1']
array([1, 2], dtype=int32)
>>> bar['f2']
array([2, 3], dtype=int32)
如果您想要一个包含元素而不是字段的普通数组,请使用dtype=object
。
关于python - 使用字符串和整数从 Numpy 中的列表创建结构体数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26548135/