Python 尝试将字符串数组转换为具有混合给定数据类型的数组时发生ValueError

Python 尝试将字符串数组转换为具有混合给定数据类型的数组时发生ValueError,python,arrays,numpy,Python,Arrays,Numpy,我正在尝试将一个由字符串组成的数组转换为一个带有浮点值和字符串的数组。我的代码当前如下所示: datatype1=np.dtype([ ('LOCATION_THETA',np.float64), ('LOCATION_PHI',np.float64), ('ETHETA_MAGN',np.float64), ('ETHETA_PHASE',np.float64), ('EPHI_MAGN',np.float64), ('EPHI_PHASE',np.float64), ('DIRECTIVIT

我正在尝试将一个由字符串组成的数组转换为一个带有浮点值和字符串的数组。我的代码当前如下所示:

datatype1=np.dtype([
('LOCATION_THETA',np.float64),
('LOCATION_PHI',np.float64),
('ETHETA_MAGN',np.float64),
('ETHETA_PHASE',np.float64),
('EPHI_MAGN',np.float64),
('EPHI_PHASE',np.float64),
('DIRECTIVITY_VERT',np.float64),
('DIRECTIVITY_HORIZ',np.float64),
('DIRECTIVITY_TOTAL',np.float64),
('POLARISATION_AXIALR',np.float64),
('POLARISATION_ANGLE',np.float64),
('POLARISATION_DIRECTION','|S5')])

table2=np.array(table,dtype=datatype1)
[['0.00' '0.00' '5.751E-01' '-2.08' '9.532E-05' '-86.19' '1.7442' '-73.8670' '1.7442' '0.0002' '0.00' 'RIGHT']
 ['2.00' '0.00' '5.747E-01' '-2.11' '1.291E-04' '-82.47' '1.7390' '-71.2312' '1.7390' '0.0002' '0.00' 'RIGHT']
 ['4.00' '0.00' '5.738E-01' '-2.21' '1.632E-04' '-80.31' '1.7243' '-69.1973' '1.7243' '0.0003' '0.00' 'RIGHT']
 ['6.00' '0.00' '5.722E-01' '-2.38' '1.973E-04' '-78.94' '1.7001' '-67.5479' '1.7001' '0.0003' '0.00' 'RIGHT']
 ['8.00' '0.00' '5.699E-01' '-2.61' '2.314E-04' '-78.02' '1.6663' '-66.1644' '1.6663' '0.0004' '0.01' 'RIGHT']
...
表(字符串的numpy数组)如下所示:

datatype1=np.dtype([
('LOCATION_THETA',np.float64),
('LOCATION_PHI',np.float64),
('ETHETA_MAGN',np.float64),
('ETHETA_PHASE',np.float64),
('EPHI_MAGN',np.float64),
('EPHI_PHASE',np.float64),
('DIRECTIVITY_VERT',np.float64),
('DIRECTIVITY_HORIZ',np.float64),
('DIRECTIVITY_TOTAL',np.float64),
('POLARISATION_AXIALR',np.float64),
('POLARISATION_ANGLE',np.float64),
('POLARISATION_DIRECTION','|S5')])

table2=np.array(table,dtype=datatype1)
[['0.00' '0.00' '5.751E-01' '-2.08' '9.532E-05' '-86.19' '1.7442' '-73.8670' '1.7442' '0.0002' '0.00' 'RIGHT']
 ['2.00' '0.00' '5.747E-01' '-2.11' '1.291E-04' '-82.47' '1.7390' '-71.2312' '1.7390' '0.0002' '0.00' 'RIGHT']
 ['4.00' '0.00' '5.738E-01' '-2.21' '1.632E-04' '-80.31' '1.7243' '-69.1973' '1.7243' '0.0003' '0.00' 'RIGHT']
 ['6.00' '0.00' '5.722E-01' '-2.38' '1.973E-04' '-78.94' '1.7001' '-67.5479' '1.7001' '0.0003' '0.00' 'RIGHT']
 ['8.00' '0.00' '5.699E-01' '-2.61' '2.314E-04' '-78.02' '1.6663' '-66.1644' '1.6663' '0.0004' '0.01' 'RIGHT']
...
但是,当我执行脚本时,会出现以下错误:

ValueError: could not convert string to float: RIGHT
它不应该这样做,因为我希望字符串是
|S5
,而不是
float


提前感谢您的帮助

这里发生的事情是,当你这样做时:

ts = np.array(t, dtype=dt)
数据类型应用于
表中的每个元素。对于前11个元素,它可以正常工作,然后它就进入了
“RIGHT”
,它不能将其转换为整数。下面是它在没有
“RIGHT”
的情况下的功能(这将是一个混乱的局面!)

可爱!但是等等,现在是这样如果你想保持这种状态,没关系。如果你想让它成为一个游戏,请执行以下操作:


这里发生的情况是,当您执行以下操作时:

ts = np.array(t, dtype=dt)
数据类型应用于
表中的每个元素。对于前11个元素,它可以正常工作,然后它就进入了
“RIGHT”
,它不能将其转换为整数。下面是它在没有
“RIGHT”
的情况下的功能(这将是一个混乱的局面!)

可爱!但是等等,现在是这样如果你想保持这种状态,没关系。如果你想让它成为一个游戏,请执行以下操作:


这对我有用。不过,我不得不在
表中的值之间加逗号。该错误表明,
中的一个或多个列之间可能缺少逗号。这对我有效。不过,我不得不在
表中的值之间加逗号。该错误表明,
中的一个或多个列之间可能缺少逗号。