2016-08-17 5 views
1

Zum Beispiel habe ich eine 5*5 np.array wie dieses:Get Array Zeilen- und Spaltennummer nach Werten in Python

a=[[1,2,3,4,5], 
    [6,7,8,9,10], 
    [11,12,13,14,15], 
    [16,17,18,19,20], 
    [21,22,23,24,25]] 

wenn ich den Bereich der Zeile und Spalte, in number<=15 erhalten möchten, wie kann ich das tun?

Im Gegenteil, wenn ich weiß, den Bereich der Zeile und Spalte, wie i in xrange(1,4) und j in xrange(1,4), wie kann ich die Nummer wie bekommen:

[[7,8,9], 
[12,13,14], 
[17,18,19]] 
+0

Was ist die erwartete Ausgabe für die erste Frage (* ", wenn ich will den Bereich der Zeile und Spalte, in der Zahl <= erhalten 15, wie kann ich das tun? "*). Für die zweite Frage: probiere 'a [1: 4, 1: 4]' – soon

Antwort

0

Um den Bereich auf der Grundlage einer Bedingung zu erhalten Sie können entweder den Zustand direkt anwenden oder np.where verwenden:

>>> a 
array([[ 1, 2, 3, 4, 5], 
     [ 6, 7, 8, 9, 10], 
     [11, 12, 13, 14, 15], 
     [16, 17, 18, 19, 20], 
     [21, 22, 23, 24, 25]]) 
>>> a < 15 
array([[ True, True, True, True, True], 
     [ True, True, True, True, True], 
     [ True, True, True, True, False], 
     [False, False, False, False, False], 
     [False, False, False, False, False]], dtype=bool) 
>>> np.where(a < 15) 
(array([0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 2, 2, 2, 2]), 
array([0, 1, 2, 3, 4, 0, 1, 2, 3, 4, 0, 1, 2, 3])) 

im letzteren Fall ist der Rückgabewert ein Tupel der Anpassungsindizes ist.

die entgegengesetzte Operation zu erreichen, können Sie einfach Ihre Array-Slice:

>>> ar[1:4, 1:4] 
array([[ 7, 8, 9], 
     [12, 13, 14], 
     [17, 18, 19]]) 
+0

Was bedeutet die Ausgabe von np.where? Und wie bekomme ich die Anzahl der Zeilen und Spalten? Zum Beispiel, wenn ich Wert <= 15 möchte, ist die Zeile (0,3) und die Spalte ist (0,5) –

+0

@JiaoLi Die Ausgabe ist ein Tupel aller übereinstimmenden Elemente im Array. Nimmt man sie nacheinander von links nach rechts auf, so bedeutet dies, dass "a [0,0]" der Bedingung entspricht, also "a [0,1]" ... Bis zu a [2,3 ] ',' 2' und '3' sind die letzten Elemente beider Arrays. Das sind eigentlich die "Koordinaten" jedes "True" -Wertes in dem anderen Beispiel. – 3kt

+0

Vielen Dank !!! Es ist sehr hilfreich! –

Verwandte Themen