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

  • Multiplizieren Sie jedes Element in numpy Array von jedem Element in einem anderen numpy Array
  • Zusammenführen und Summe von zwei Wörterbüchern
  • Aufbau einer nxn Matrix in Python numpy, für jeden n
  • Numpy.sum verhält sich anders bei numpy.array vs pandas.DataFrame
  • Wie erstelle ich ein leeres Array / Matrix in NumPy?
  • Numpy shuffle multidimensionalen Array nach Zeile nur, halten Spalte Reihenfolge unverändert
  • 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.