2014-01-30 420 views
4

我有一个numpy.ndarray转换numpy的字符串数组转换成int数组

a = [['-0.99' '' '0.56' ..., '0.56' '-2.02' '-0.96']] 

如何将它转换为int?

输出:

a = [[-0.99 0.0 0.56 ..., 0.56 -2.02 -0.96]] 

欲0.0代替空白 ''

+1

尝试'a.astye(浮动)'。请记住,这必须是一个numpy数组。 – Christian

+0

它说AttributeError:'numpy.ndarray'对象没有属性'astye' – veena

+1

它是'astype',那就是你要找的 – Vincent

回答

1

即一个纯Python溶液和它产生list

通过简单的python操作,可以将内部列表与float进行映射。这会将所有字符串元素转换为浮点数并将其分配为列表中的零索引项目。

a = [['-0.99' , '0.56' , '0.56' , '0.56', '-2.02' , '-0.96']] 

a[0] = map(float, a[0]) 

print a 
[[-0.99, 0.56, 0.56, 0.56, -2.02, -0.96]] 

更新:请尝试以下

a = [['-0.99' , '0.56' , '0.56' , '0.56', '-2.02' , '-0.96', '', 'nan']] 
for _position, _value in enumerate(a[0]): 
    try: 
     _new_value = float(_value) 
    except ValueError: 
     _new_value = 0.0 
    a[0][_position] = _new_value 

[[-0.99, 0.56, 0.56, 0.56, -2.02, -0.96, 0.0, nan]] 

它列举的对象列表,并尝试将其解析到float,如果失败,然后用0.0

+0

如果它有一个空白字符串,该怎么办。检查更新后的问题 – sam

+0

好吧,我更新我的答案,并使其处理列表中的所有内容。如果它无法解析,那么它将替换为'0.0' – FallenAngel

+0

它也保留'nan'值。 – FallenAngel

6
import numpy as np 

a = np.array([['-0.99', '', '0.56', '0.56', '-2.02', '-0.96']]) 
a[a == ''] = 0.0 
a = a.astype(np.float) 

更换结果是:

[[-0.99 0. 0.56 0.56 -2.02 -0.96]] 

你的值是浮点数,而不是整数。目前还不清楚您是否想要一个列表或一个numpy数组作为您的最终结果。你可以很容易地得到一个列表的列表如下:

a = a.tolist() 

结果:

[[-0.99, 0.0, 0.56, 0.56, -2.02, -0.96]]