2016-03-26 2 views
0

Ich habe ein numpy Array mit Dim (157,1944).Find Indizes von Spalten mit einigen Nonzero-Element in einem 2d-Array

Ich möchte Indizes von Spalten, die ein Nonzero-Element in jeder Zeile haben.

Beispiel: [[0,0,3,4], [0,0,1,1]] ---->[2,3]

Wenn Sie jede Zeile suchen, gibt es ein Non Zero Element in Spalten [2, 3]

Also, wenn ich

[[0,1,3,4], [0,0,1,1]]

Ich sollte [1,2,3] bekommen, weil Spalte Index 0 keine Nonzero-Elemente in einer Zeile hat.

+0

Also, die zweite Zeile hat keinen eindeutigen Index, die für diesen Fall nicht Nullen sind? Könnten Sie noch einen anderen, nicht so einfachen Fall hinzufügen, wie zum Beispiel: [[0,0,3,4], [0,0,1,1]], [2,0,0,3], [0,3,1 , 3]] 'und listet seine erwartete Ausgabe auf? – Divakar

+0

ja. In deinem Fall werde ich [0,1,2,3] –

+1

bekommen. Ich weiß nicht, wie du zu "[0,1,2,3]" gekommen bist. Könnten Sie das klären? Bitte bearbeiten Sie die Frage, um alle diese Punkte aufzulisten. – Divakar

Antwort

3

Nicht sicher, ob Ihre Frage vollständig definiert ist. Allerdings sagen wir mit

import numpy as np 
a = np.array([[0,0,3,4], [0,0,1,1]]) 

dann

>>> np.nonzero(np.all(a != 0, axis=0))[0] 
array([2, 3]) 

sind die Indizes der Spalten, für die keine der Zeilen sind ungleich Null beginnen und

>>> np.nonzero(np.any(a != 0, axis=0))[0] 
array([2, 3]) 

sind die Indizes die Spalten, für die nicht alle der Zeilen sind Null (es ist dasselbe für das Beispiel, das Sie gaben).

Verwandte Themen