Ich habe eine Matrix zu manipulieren xs
genannt:Gibt es eine elegante Art und Weise meines ndarray
array([[1, 1, 1, 1, 1, 0, 1, 0, 0, 2, 1],
[2, 1, 0, 0, 0, 1, 2, 1, 1, 2, 2]])
Jetzt habe ich die Nullen von dem nächstgelegenen vorherigen Elemente in der gleichen Zeile ersetzt werden soll (Unter der Annahme, dass die erste Säule sein muss nicht Null.). Die grobe Lösung, wie folgend:
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]])
Jede Hilfe sehr geschätzt wird.
Warum denken Sie, dass Ihre Lösung nicht elegant ist? Die einzige Verbesserung, die ich mir vorstellen kann, ist Schleife vom zweiten Col zu starten, weil Sie die Annahme haben, dass es Ihnen ein paar Operationen ersparen wird;) –
@jaux Ich würde gerne einige ndarray's Indizierungszauber verwenden, um dies zu tun. Die Leistung von Loop in Python ist nicht so gut. – Eastsun