Wählen Sie Zeilen so aus, dass eine bestimmte Spalte Werte aus einer Liste enthält


John Tera

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]])?

Divakar

Verwenden Sie np.in1ddiese Option , um eine Maske für jedes Vorkommen der Elemente zu erstellen, nach denen wir suchen, und boolean indexingwä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]])

Verwandte Artikel