python - 使用字符串和整数从 Numpy 中的列表创建结构体数组

标签 python arrays numpy

我已通读文档,但无法弄清楚如何使用 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/

相关文章:

Python 检查元组的相等性

python - Jupyter Notebook - ModuleNotFoundError

python - 对二维 numpy 数组中的每个 NXN 子数组执行计算的最快方法

javascript - 输入回文数

javascript - 如何用for循环填充数组?

arrays - 快速将字符串数组转换为 Double

python - 使用tensordot实现批量矩阵乘法

python - Tensorflow:简单的 3D Convnet 不学习

Python:将列表写入每行中的各个列

python - AttributeError: 'module' 对象没有属性