我有一个矩阵命名xs
:是否有操纵一些优雅的方式,我ndarray
array([[1, 1, 1, 1, 1, 0, 1, 0, 0, 2, 1],
[2, 1, 0, 0, 0, 1, 2, 1, 1, 2, 2]])
现在我想以取代最近的一个元素零点在同一行中(假设第一列必须是非零)。 粗糙的解决方案如下:
In [55]: row, col = xs.shape
In [56]: for r in xrange(row):
....: for c in xrange(col):
....: if xs[r, c] == 0:
....: xs[r, c] = xs[r, c-1]
....:
In [57]: xs
Out[57]:
array([[1, 1, 1, 1, 1, 1, 1, 1, 1, 2, 1],
[2, 1, 1, 1, 1, 1, 2, 1, 1, 2, 2]])
任何帮助将不胜感激。
你为什么认为你的解决方案不够优雅?只有我能想到的改进是从第二列开始循环,因为你有这个假设,它会为你节省一些操作;) –
@jaux我想用一些ndarray的索引魔法来做到这一点。 python中循环的表现并不好。 – Eastsun