2016-05-11 17 views
0

ich dieses ArrayÜberprüfen Sie, ob Matrix enthält gültige Elemente

scale=np.array([-3,0,2,4,7,10,12]) 

Und diese Matrix

matrix=np.array([[17, 10, 10], 
     [10, 12, 12], 
     [ 7, 7, 4], 
     [-3, 11, 2]]) 

Jetzt möchte ich die Indizes der Zeilen in der Matrix wissen, welche nicht von der enthält Elemente im Maßstab. Die Ausgabe sollte sein:

array([0,3]) 

Ich habe versucht, mit np.where, np.all und np.any ohne das Problem zu lösen.

Haben Sie eine einfache Lösung?

+0

vielleicht sollte der Ausgang 'Array ([0,3])' sein? –

+0

Ich bin verwirrt. Sie sagen, Sie möchten die Zeile, die keine der Skalierungswerte enthält, aber jede Zeile und Spalte Ihrer Matrix hat mindestens einen der Skalierungswerte. Und um die Sache noch verwirrender zu machen, listet Ihre Antwort nur die zwei Skalierungswerte auf, die nicht in der Matrix enthalten sind. Kannst du bitte klarstellen, was genau du suchst? Suchen Sie nach den Skalenwerten, die in der Matrix nicht vorhanden sind? – dkhamrick

+0

Ich denke, Sie meinen, Sie wollen die Indizes der Zeilen, die nicht * total * der Skalenwerte bestehen, d. H. Mindestens ein Wert in der Zeile ist nicht in "scale". –

Antwort

1

Sie suchen eher für:

np.where(~np.in1d(matrix, scale).reshape(matrix.shape).all(axis=1)) 
#(array([0, 3], dtype=int64),) 
+0

Danke. Die Ausgabe ist ein Tupel, aber im Falle eines leeren Tupels, das es zu sein scheint (array ([], dtype = int64)), wie kann ich "Empty tuple" drucken? –

Verwandte Themen