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

Python 使用字符串和整数从Numpy中的列表创建结构数组,python,arrays,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]作为整数数组 不幸的是,这会产生一个类型错误:数据类型不可理解。我尝试了很多其他方法让它工作,但找不到任何直观的 目前,我只是在做bar=np.array(

我已经阅读了文档,但无法解决如何使用numpy创建字符串和整数的结构化数组。我的问题的简化版本如下:

foo = [['asd', 1, 2],['bgf',2,3]]
bar = np.array(foo, dtype=['S10', 'i4','i4'])
然后我希望将
bar[:,0]
作为字符串数组,将
bar[:,1]
bar[:,2]
作为整数数组

不幸的是,这会产生一个
类型错误:数据类型不可理解
。我尝试了很多其他方法让它工作,但找不到任何直观的

目前,我只是在做
bar=np.array(foo)
,然后每当我从第2列或第3列调用一个值时,就转换为整数,这远远不够理想


如何从列表列表中创建所需的结构数组
bar

如果数组中有多个数据类型,请使用dtype=object

>>> bar = np.array(foo, dtype=object)
>>> bar[:,0]
array(['asd', 'bgf'], dtype=object)
>>> bar[:,1]
array([1, 2], dtype=object)
>>> bar[:,2]
array([2, 3], dtype=object)

这里有一种方法可以创建:

foo=[('asd',1,2),('bgf',2,3)] >>>bar=np.array(foo,dtype='S10,i4,i4') >>>酒吧 数组([('asd',1,2),('bgf',2,3)], 数据类型=[('f0','S10'),('f1','
>>> 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)