提取3D(time,lat,lon)数组中的每个值并创建一个列表或一维数组

问题描述:

请原谅我,如果这很简单,但我是python的新手。我每天都有一个数据点,每个纬度(180度)和经度(360度)和时间(6624)是一个三维数组,具有numpy.shape(时间,纬度,经度)。我试图提取每一个风速并将其放入一个新的数组或列表中,以便我可以绘制直方图或概率密度函数。有没有在Python中提取每个这些值的方法?提取3D(time,lat,lon)数组中的每个值并创建一个列表或一维数组

+0

你的意思是你需要每一行矩阵与拉特,长和时间来生成函数? – skrubber

+0

是的,对于每个经纬度单元,有6624天的风速数据,其中一个值是单个值,并且该点能够查看特定单元格并提取6624个风速来创建直方图。感谢您提供的任何见解。 – laff

+0

提供了几行3D数组,因为切片将根据数组的形状而变化 – skrubber

所以如果你做wind_speedjja.shape你会得到(6624, 180, 360)

这不是一个有效的答案,更多的是用嵌套循环进行说明。

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 

如果你只是扁平阵列后,做flat_wsp = windspeed.flatten()

+0

是的,那是wind_speedjja的形状。 – laff

+0

该代码看起来可能有效。我现在正在测试它,但是,有了这么多的数据点,它需要很长时间。一旦我得到结果,我会更新。谢谢! – laff

+0

是的,这段代码运行良好。感谢您的帮助! – laff

您的数据很大,所以您必须先采用全球方法。

当作玩具例子:

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

然后你可以决定你将调整哪些区域。