2

このコードを大規模な 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)

ありがとう

4

1 に答える 1

0

おそらく、ネストされたリスト内包表記を使用します。

[[correlation(sub_cube1[:, lat, lon], sub_cube2).min() 
  for lon in xrange(longitude.shape[0])] 
 for lat in xrange(latitude.shape[0])]
于 2016-02-18T13:57:24.080 に答える