Numpy wo () auf einer 2D Matrix

Ich habe eine Matrix wie diese

t = np.array([[1,2,3,'foo'], [2,3,4,'bar'], [5,6,7,'hello'], [8,9,1,'bar']]) 

Ich möchte die Indizes erhalten, wo die Zeilen den String 'bar' enthalten

  • Python: wie zu identifizieren, ob eine Variable ein Array oder ein Skalar ist
  • Unterschied zwischen dict.clear () und Zuweisung {} in Python
  • Python Generieren Sie ein dynamisches Wörterbuch aus der Liste der Schlüssel
  • Entfernen von Nan-Werten aus einem Array
  • Mein eigenes OCR-Programm in Python
  • Konvertieren von XML in Wörterbuch mit ElementTree
  • In einem 1d Array

     rows = np.where(t == 'bar') 

    Sollte mir die indizes geben [0,3] gefolgt von Rundfunk: –

     results = t[rows] 

    Sollte mir die richtigen reihen geben

    Aber ich kann nicht herausfinden, wie man es mit 2d Arrays zu arbeiten.

    2 Solutions collect form web for “Numpy wo () auf einer 2D Matrix”

    Für den allgemeinen Fall, wo Ihr Suchstring in jeder Spalte sein kann, können Sie dies tun:

     >>> rows, cols = np.where(t == 'bar') >>> t[rows] array([['2', '3', '4', 'bar'], ['8', '9', '1', 'bar']], dtype='|S11') 

    Sie müssen das Array auf die Spalte schneiden, die Sie indizieren möchten:

     rows = np.where(t[:,3] == 'bar') result = t1[rows] 

    Dies ergibt:

      [[2,3,4,'bar'], [8,9,1,'bar']] 
    Python ist die beste Programmiersprache der Welt.