将空的 numpy 字符串替换为 0

Tog*_*ggo 5 python arrays string replace numpy

我必须 numpy 字符串数组,如下所示:

[['0', '', '12.12', '140.65', '', ''],
['3', '', '10.45', '154.45', '', ''],
['5 ', '', '15.65', '184.74', '', '']]

我需要做的是将空单元格替换为数字,以便将其转换为浮点数组。我不能只删除列,因为在某些情况下空单元格已被填充。我试过这个:

data = np.char.replace(data, '','0').astype(np.float64)
Run Code Online (Sandbox Code Playgroud)

但这只会在所有字符之间放置一个 0,最终结果如下:

[[0, 0, 1020.0102, 104000.0605, 0, 0],
[30, 0, 1000.0405, 105040.0405, 0, 0],
[50, 0, 1050.0605, 108040.0704, 0, 0]]

我不明白为什么 python 会这样做?我通过谷歌搜索但找不到 numpy.char.replace 的很好的解释。谁能向我解释它是如何工作的?

tim*_*geb 5

>>> a = np.array([['0', '', '12.12', '140.65', '', ''],
... ['3', '', '10.45', '154.45', '', ''],
... ['5', '', '15.65', '184.74', '', '']])
>>> a[a == ''] = 0
>>> a.astype(np.float64)
array([[   0.  ,    0.  ,   12.12,  140.65,    0.  ,    0.  ],
       [   3.  ,    0.  ,   10.45,  154.45,    0.  ,    0.  ],
       [   5.  ,    0.  ,   15.65,  184.74,    0.  ,    0.  ]])
Run Code Online (Sandbox Code Playgroud)

  • @Toggo `replace` 对子字符串进行操作,因此它或多或少地检查每个字符串的每个位置以查找要替换的字符串。由于“”在任何地方都匹配,因此您将在任何地方插入“0”。 (2认同)