2017-12-03 1 views
0

mir verzeihen, wenn diese einfach, aber ich bin neu in Python. Ich habe tägliche Windgeschwindigkeitsdaten mit einem Datenpunkt für jeden Breitengrad (180) und Längengrad (360) und Zeit (6624), was ein 3D-Array mit numpy.shape (time, lat, lon) ist. Ich versuche, jede Windgeschwindigkeit zu extrahieren und in ein neues Array oder eine neue Liste zu bringen, so dass ich ein Histogramm oder eine Wahrscheinlichkeitsdichtefunktion darstellen kann. Gibt es eine Möglichkeit in Python, jeden dieser Werte zu extrahieren?jeden Wert in einem 3D (Zeit, lat, lon) Array extrahieren und eine Liste oder 1D-Array erstellen

+0

Sie meinen, Sie brauchen jede Zeile die Matrix mit dem Lat, lang und Zeit, um die Funktion zu generieren? – skrubber

+0

Ja, es gibt 6624 Tage Windgeschwindigkeitsdaten mit einem Wert für jede Lat- und Lon-Zelle, und der Punkt besteht darin, in der Lage zu sein, eine bestimmte Zelle zu betrachten und die 6624 Windgeschwindigkeiten zu extrahieren, um ein Histogramm zu erstellen. Vielen Dank für Ihre Informationen. – laff

+0

bietet einige Zeilen Ihres 3D-Array, weil Slicing auf je ändern wird, wie das Array geformt ist – skrubber

Antwort

0

also, wenn Sie wind_speedjja.shape tun, erhalten Sie (6624, 180, 360)?

Dies ist keine effiziente Antwort, mehr geschrieben, um mit einer verschachtelten Schleife illustrativ zu sein.

all_wsp = np.array([]) 
mtx = wind_speed.shape 
for idx_lat in range(mtx[1]): 
    for idx_long in range(mtx[2]): 
     lat_long_wsp = wind_speed[:, idx_lat, idx_long] 
     # do a plot on lat_long_wsp, or your histogram 
     all_wsp = np.concatenate((all_wsp, lat_long_wsp)) 
     # all_wsp will be all single values in a flattened array 

Wenn Sie gerade nach dem abgeflachten Array sind, tun flat_wsp = windspeed.flatten().

+0

Ja, das ist die Form von wind_speedjja. – laff

+0

Dieser Code sieht aus wie es funktionieren könnte. Ich teste es jetzt aber mit so vielen Datenpunkten, es dauert sehr lange. Ich werde aktualisieren, sobald ich ein Ergebnis bekomme. Vielen Dank! – laff

+0

Ja, dieser Code funktioniert gut. Danke für die Hilfe! – laff

0

Ihre Daten sind riesig, so müssen Sie zuerst globalen Ansatz haben.

Als Spielzeug Beispiel:

from pylab import * 

wind = rand(662,18,36) 
means = wind.mean(axis=0) 
subplot(121) 
hist(means.ravel(),100) 
subplot(122) 
imshow(means) 
colorbar() 
show() 

enter image description here

Dann können Sie entscheiden, welcher Bereich Sie verfeinern wird.

Verwandte Themen