2010-10-06 100 views

回答

106

那么,如果你正在读取列表中的数据,只需做np.array(map(float, list_of_strings))(或等价地使用列表理解)。 (在Python 3,你需要调用listmap返回值,如果你使用map,因为map返回迭代器)。

但是,如果它已经字符串numpy的阵列,有一个更好的办法。使用astype()

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

如果你有一个数组,我想维护一个字符串?像['a','1.1','2.2','3.3'] - > ['a',1.1,2.2,3.3] – ePascoal 2015-05-09 20:09:21

+4

@MrMartin - 然后使用'list'。 Numpy阵列是故意均匀输入的。如果你真的想要,你可以使用一个对象数组(例如'np.array(['apple',1.2,1,{'b'= None,'c'= object()}],dtype = object)') 。但是,与使用列表相比,对象数组没有任何显着的优势。 – 2015-05-09 20:14:35

1

您可以使用此以及

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

如果您有(或创建)一个字符串,你可以使用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'。如果您从txt文件读取一行,则每行都将是一个字符串。

相关问题