假设有一个形状为(365,100,100)的三维数组: Prec 。
测试每个网格的整个区域是否其沉淀超过一定值Pd分开干燥和湿润。我想把这一年的干燥日总结一下。
freq = np.zeros(100,100).reshape(100,100)
Pd = xxx
for i in range(0,prec.shape[0],1):
for j in range(0,prec.shape[1],1):
for k in range(0,prec.shape[2],1):
if prec[i,j,k] < Pd:
freq[j,k] +=1
我认为太多的循环必须浪费时间。是否有一些最简洁的方法来实现类似的工作? 任何建议都会很感激!
答案 0 :(得分:2)
您正在prec
的第一轴进行比较和求和。可以使用NumPy broadcasting
以矢量化方式执行该比较,然后沿着第一个轴与.sum(0)
求和,就像这样 -
freq = (prec < Pd).sum(0)