如何将字符串数组转换为numpy的浮点数组?

189 投票
6 回答
540861 浏览
提问于 2025-04-16 05:06

我该如何在NumPy中进行以下转换?

["1.1", "2.2", "3.2"]  ⟶  [1.1, 2.2, 3.2]

6 个回答

7

如果你有一个字符串(或者自己创建一个字符串),你可以使用np.fromstring这个方法:

import numpy as np
x = ["1.1", "2.2", "3.2"]
x = ','.join(x)
x = np.fromstring( x, dtype=np.float, sep=',' )

需要注意的是,x = ','.join(x)这行代码会把数组x变成一个字符串,比如变成'1.1, 2.2, 3.2'。如果你从一个文本文件中读取一行内容,每一行本身就已经是字符串了。

20

另一个选择可能是 numpy.asarray

import numpy as np
a = ["1.1", "2.2", "3.2"]
b = np.asarray(a, dtype=float)

print(a, type(a), type(a[0]))
print(b, type(b), type(b[0]))

得到的结果是:

['1.1', '2.2', '3.2'] <class 'list'> <class 'str'>
[1.1 2.2 3.2] <class 'numpy.ndarray'> <class 'numpy.float64'>
263

好吧,如果你是把数据读成一个列表的话,可以直接用 np.array(map(float, list_of_strings)) 这个方法(或者你也可以用列表推导式来实现)。不过在Python 3中,如果你用 map 的话,记得要在 map 返回的结果上再加一个 list,因为现在 map 返回的是一个迭代器。

但是,如果你的数据已经是一个字符串的numpy数组,那就有更简单的方法。你可以用 astype() 来转换。

import numpy as np
x = np.array(['1.1', '2.2', '3.3'])
y = x.astype(np.float)

撰写回答