2

座標と次元が割り当てられた xarray を介して作成されたデータセットがあります。そこから得られたのは、1 次元配列と 3 次元配列の 2 つの変数で、最初の配列と同じ座標と 2 つの追加の配列があります。両方で共有されていない2つの座標で定義された2次元空間の各点について、共有座標「memb」で両方の共分散を取得し、それを行列にしたいと考えています。

つまり、変数は「memb」で定義され、別の変数は「memb」、「north_south」、および「west_east」で定義されます。north_south と west_east の各点の memb 共分散を見つけて、それを変数に割り当て、それぞれの north_south と west_east の値に割り当てたいと思います。

ある時点でそれを取得するには、次のコードを実行して目的の結果を取得できます。

numpy.cov(var_1,var_2.isel(north_south=1,west_east=1)[0][1]

これを、north_south と west_east のディメンションを持つ変数に割り当てたいと考えています。ブロックで機能させる方法はわかっていると思いますが、各ポイントで2つの次元を持つ変数にどのように割り当てることができますか?

4

1 に答える 1

3

方法apply_along_axisは適切と思われる。例:

import numpy as np
a = np.random.uniform(size=(5,))
b = np.random.uniform(size=(5, 3, 2))
c = np.apply_along_axis(lambda x: np.cov(a, x)[0][1], 0, b)

cこれはサイズが 3 行 2 列の 2D 配列です。 の 2 番目のパラメータは、動作する の軸が 0 番目apply_along_axisの軸であることを指定しますb(1D 配列 のサイズと一致する限り、別の軸でもかまいませaん)。ラムダは単に共分散を計算し、目的のスカラー値を返します。

于 2017-01-11T18:13:51.523 に答える