将numpy字符串数组转换为整数数组

13
我有一个numpy.ndarray。
a = [['-0.99' '' '0.56' ..., '0.56' '-2.02' '-0.96']]

如何将它转换为整数?

输出:

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

我希望在空白处 '' 的位置上显示 0.0


1
尝试使用 a.astype(float)。请注意,a必须是一个numpy数组。 - Christian
1
这是 astype,这就是你要找的。 - Vincent
1
那是一个浮点数数组,你需要 a.astype(np.float) - Jamie Bull
1
我有一个空字符串。 - veena
1
如果你在使用Python 3,则应该使用np.array(a, dtype=np.float32)。 - Ammar Ameerdeen
显示剩余3条评论
2个回答

15
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数组作为最终结果不太清楚。您可以通过以下方式轻松获得一个列表嵌套列表:

```python result = [[val] for val in your_values] ```
a = a.tolist()

结果:

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

1
那是一个纯Python解决方案,它生成一个列表。 通过简单的Python操作,您可以将内部列表映射为浮点数。这将把所有字符串元素转换为浮点数并将其分配为列表的零索引项。
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.0”。 - FallenAngel
它还保留了nan值。 - FallenAngel

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接