因此,这应该是一件非常简单的事情,但无论出于何种原因,我将字符串数组转换为 float 数组的任何操作都不起作用。
我有一个两列数组,如下所示:
Name Value
Bob 4.56
Sam 5.22
Amy 1.22
我试试这个:
for row in myarray[1:,]:
row[1]=float(row[1])
还有这个:
for row in myarray[1:,]:
row[1]=row[1].astype(1)
还有这个:
myarray[1:,1] = map(float, myarray[1:,1])
他们似乎都在做某事,但当我仔细检查时:
type(myarray[9,1])
我明白了
<type> 'numpy.string_'>
最佳答案
Numpy 数组必须有一个 dtype
除非它是结构化的。由于数组中有一些字符串,因此它们必须都是字符串。
如果你想要一个复杂的dtype
,你可以这样做:
import numpy as np
a = np.array([('Bob','4.56'), ('Sam','5.22'),('Amy', '1.22')], dtype = [('name','S3'),('val',float)])
注意 a
现在是 1d structured array ,其中每个元素都是 dtype
类型的元组。
您可以使用字段名称访问这些值:
In [21]: a = np.array([('Bob','4.56'), ('Sam','5.22'),('Amy', '1.22')],
...: dtype = [('name','S3'),('val',float)])
In [22]: a
Out[22]:
array([('Bob', 4.56), ('Sam', 5.22), ('Amy', 1.22)],
dtype=[('name', 'S3'), ('val', '<f8')])
In [23]: a['val']
Out[23]: array([ 4.56, 5.22, 1.22])
In [24]: a['name']
Out[24]:
array(['Bob', 'Sam', 'Amy'],
dtype='|S3')
关于python - 将 numpy 字符串数组转换为 float : Bizarre?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15735337/