python - 将 numpy 字符串数组转换为 float : Bizarre?

标签 python numpy type-conversion

因此,这应该是一件非常简单的事情,但无论出于何种原因,我将字符串数组转换为 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/

相关文章:

video - 如何在ffmpeg中为从静态图像生成的视频设置帧速率

sql-server - SQL 转换备份大小列

java - BlazeD 在将数据从 flex 传递到 java 时将 int 转换为 float

python - 将两个 LISTS 值的 SUM 添加到新 LIST

python - 检查变量是否可以解包

python - 如何在python中使用矩阵和向量之间的元素乘法

python - numpy.exponential 行为略有不同

python - cv2.COLOR_BGR2Lab 不工作,但 cv2.COLOR_BGR2GRAY 正在工作

python - 为什么 scipy.optimize.curve_fit 不能使用 numpy.sinc 函数拟合我的数据?

python - 对应于所有唯一行的所有行的平均值