Wählen Sie Zeilen so aus, dass eine bestimmte Spalte Werte aus einer Liste enthält
Ich möchte Zeilen aus einem Numpy-Array erhalten, das einen bestimmten Wert in einer Spalte hat. Das folgende Beispiel zeigt meinen Ansatz. Ich konnte Zeilen abrufen, wenn ich einen bestimmten Wert angegeben habe, aber wenn ich mehrere Werte angegeben habe, da ('4', '8')
ich keine erwarteten Zeilen erhalten habe.
import numpy as np
arr = np.array([[1,2,3,4], [5,6,7,8], [9,10,11,12]])
arr2 = arr[arr[:,3] == 4]
arr3 = arr[arr[:,3] in ('4', '8')]
arr ist array([[ 1, 2, 3, 4],[ 5, 6, 7, 8], [ 9, 10, 11, 12]])
arr2 ist array([[1, 2, 3, 4]])
arr3 ist array([1, 2, 3, 4])
.
Welchen Befehl soll ich verwenden, um eine Ausgabe zu erhalten array([[1, 2, 3, 4], [ 5, 6, 7, 8]])
?
Verwenden Sie np.in1d
diese Option , um eine Maske für jedes Vorkommen der Elemente zu erstellen, nach denen wir suchen, und boolean indexing
wählen Sie dann einfach die gültigen Zeilen aus dem Eingabearray aus.
arr[np.in1d(arr[:,3], [4,8])]
Probelauf -
In [149]: arr
Out[149]:
array([[ 1, 2, 3, 4],
[ 5, 6, 7, 8],
[ 9, 10, 11, 12]])
In [150]: np.in1d(arr[:,3], [4,8]) # Mask of valid ones
Out[150]: array([ True, True, False], dtype=bool)
In [151]: arr[np.in1d(arr[:,3], [4,8])] # Select rows off arr
Out[151]:
array([[1, 2, 3, 4],
[5, 6, 7, 8]])