löschen Lassen Sie uns sagen, ich habe eine quadratische Matrix als Eingang:Python - NumPy - mehrere Zeilen und Spalten aus einem Array
array([[0, 1, 1, 0],
[1, 1, 1, 1],
[1, 1, 1, 1],
[0, 1, 1, 0]])
ich die nonzeros im Array zählen wollen nach Entfernen der Zeilen 2 und 3 und der Spalten 2 und 3. Danach möchte ich das Gleiche für die Zeilen 3 und 4 und die Spalten 3 und 4 tun. Daher sollte der
sein Hier0 # when removing rows/cols 2 and 3
3 # when removing rows/cols 3 and 4
ist die naive Lösung mit np.delete
:
import numpy as np
a = np.array([[0,1,1,0],[1,1,1,1],[1,1,1,1],[0,1,1,0]])
np.count_nonzero(np.delete(np.delete(a, (1,2), axis=0), (1,2), axis=1))
np.count_nonzero(np.delete(np.delete(a, (2,3), axis=0), (2,3), axis=1))
Aber np.delete
gibt ein neues Array. Gibt es eine schnellere Methode, bei der Zeilen und Spalten gleichzeitig gelöscht werden? Kann Maskierung verwendet werden? Die documentation auf np.delete
lautet:
Oft ist es vorzuziehen, eine boolean Maske zu verwenden.
Wie gehe ich dabei vor? Vielen Dank.
Wenn Sie diese Art von Fragen geben, ist es wichtig, dass die Größen der einzelnen variablen (zB Größe der Matrix zu erklären. , Anzahl der gelöschten Zeilen, usw.), da davon die Qualität eine Menge Antworten ableitet. – Veedrac
@Veedrac Danke! Ich kenne. Ich werde versuchen, in der Zukunft nicht zu vergessen. In diesem Fall war die Anzahl der Zeilen in der quadratischen Matrix nie größer als 10. –