2016-04-19 18 views
0

Die Daten sind ein 3D-Array mit Zeit, Breite und Länge in der Reihenfolge. Ich habe versucht mit np.where() den Index aller Mindestwerte zu geben, aber es hat nicht funktioniert.So finden Sie den Mindestdruck mit Längen- und Breitengrad

print(np.where(n == msl.min)) 

Es gibt die Ergebnisse als (array([], dtype=int64),), aber ich brauche wirklich die genaue Länge und Breite.

+0

Mindestdruck? Wo sind Druckinformationen? – Acey

Antwort

0

Sie müssen das min() Attribut aufrufen, um den Minimalwert zu erhalten:

Print(np.where(n == msl.min())) 

Das Problem ist, dass Sie msl.min ohne Klammern anrufen, die eine Funktion Objekt zurückgibt. Keines der Elemente in Ihrem Array entspricht der Funktion, daher gibt numpy.where Ihnen ein leeres Array.

+0

Immer noch die gleiche Ausgabe :( –

0

Wenn Sie die min/max von einer Spalte finden wollen, müssen Sie eine numpy Funktion, die benannt ist: np.min() und np.max

Sie so etwas machen kann:

max_value = np.max(array['column_name']) 
min_value = np.min(array['column_name']) 
0

I simulierte Ihre Druckdaten durch ein 3D-Array gefüllt mit zufälligen ganzen Zahlen von 0 bis 9 (Minimal- und Maximaldruck simuliert, jeweils):

>>> msl = np.random.randint(0, 10, (2, 3, 4)) 
array([[[3, 7, 7, 0], 
     [1, 0, 9, 8], 
     [9, 4, 9, 4]], 

     [[4, 2, 9, 8], 
     [2, 4, 2, 5], 
     [5, 4, 0, 4]]]) 
012.351.

Das oben gezeigte Spielzeugbeispiel stellt die Werte einer bestimmten Größe (d. H. Druck) zu zwei verschiedenen Zeiten, drei verschiedenen Breiten und vier verschiedenen Längen dar.

Der folgende Code gibt Ihnen die Indizes der Zeit, Breiten- und Längen für den Minimalwert des Drucks (dh die Lage der 0en in msl):

>>> print np.transpose(np.where(msl==np.min(msl))) 
[[0 0 3] 
[0 1 1] 
[1 2 2]] 

Beachten Sie, dass Sie brauchen um zuerst np.random.seed(somevalue) auszuführen, um die gleichen Ergebnisse bei verschiedenen Läufen zu erhalten (um die angezeigten Ergebnisse zu reproduzieren, müssen Sie somevalue = 1000 setzen).

Verwandte Themen