このコードを大規模な 3D データセットで実行しようとしています。目標は、他のすべてのグリッド ポイントに対する各グリッド ポイントの時間相関 (軸 0) を計算することです。私は以下のコードのように考えました: 2 つのループ、各次元に 1 つずつ。これは小さなデータセットでは問題ありませんが、現在はより大きな解像度に移行しており、実行に数日かかっています。
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
、2 つの時系列間の相関係数を計算するために使用します。
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)
ありがとう