我正在尝试在大型3D数据集上运行此代码。目标是计算每个网格点与所有其他网格点的时间相关性(轴0)。我想做下面的代码:两个循环,每个维度一个。对于小型数据集来说这是可以的,但现在我转向更大的分辨率并且需要数天才能运行。
for lat in range(latitude.shape[0]):
print('-->lat_points = ' + str(lat) + '/' +
str(latitude.shape[0]))
for lon in range(longitude.shape[0]):
print ('lon_points = ' + str(lon) + '/' +
str(longitude.shape[0]))
corr = correlation(sub_cube1[:, lat, lon], sub_cube2)
rho[lat, lon] = corr.min()
vec_lat[lat, lon] = np.where(corr == corr.min())[0]
vec_lon[lat, lon] = np.where(corr == corr.min())[1]
任何人都可以建议加快/优化这段代码,记住我只能访问标准的python库(所以没有mpi4py!)?
correlation
函数使用pandas
来计算两个时间序列之间的相关系数:
corr_coef = np.empty(shape=series1[0, ].shape)
for j in range(series1.shape[-2]):
for k in range(series1.shape[-1]):
apd = pd.Series(series1[:, j, k])
bpd = pd.Series(series2[:, j, k])
corr_coef[j, k] = apd.corr(bpd)
由于
答案 0 :(得分:0)
也许使用嵌套列表理解:
[[correlation(sub_cube1[:, lat, lon], sub_cube2).min()
for lon in xrange(longitude.shape[0])]
for lat in xrange(latitude.shape[0])]