Python-ndarray向量化

时间:2018-09-30 15:55:58

标签: python multidimensional-array vectorization

我有一个5维ndarray:spec([800,721,9,476,476],dtype = np.float32)。 我数组的5个维度分别对应(时间,释放,高度,纬度,经度),其值表示给定时间,释放,高度,纬度和经度的粒子总数。

第3维对应于9个高度级别:100m,200m,300m,500m,1000m,1500m,2000m,15000m和混合高度。

第九个高度级别(mixing-height)除外,它不包含给定时间和位置的粒子总数,而是一个高度,它属于高于15000m的特定释放。

对于给定的发布时间,时间,纬度和经度,我想添加所有位于低于混合高度的高度的粒子。

#For one release extract all values for all other dimensions:
release_0 = dataset['spec001'][:,release_num,:,:,:]

#Extract the mixing height for all grid cells (lat/long) in time:
mix_height = release_0[:,8,:,:]  

#Extract all height-values (except for the last one that contains the 
mixing-height) for all grids (lat/long) and all times of this release:
resp = release_0[:,:8,:,:]  

#find index of height level under mixing-height:
altitudeMax_0 = np.argmin(height < mix_height[time,lat,long]) 
#argmin returns the index of the first list-item with the lowest value. 

r = resp[fp_time, :altitudeMax_0+1, ilat, ilong].sum()
#sum particles from all height levels under the height-level

我用for循环来控制它的发布,时间,纬度和时间,这是永远的。有没有一种使用矢量化的方法来跳过循环并加快过程?

提前谢谢!

0 个答案:

没有答案