7

の作成を視覚化する最も簡単な方法は、 を作成し、作成した座標で値を入力N-dimensional DataArrayすることであることがわかりました。np.ndarray実際にやってみたところ、更新の仕方がわかりませんでしたxr.DataArray

xr.DataArray作成したラベルを使用して初期化したラベルを更新するにはどうすればよいですか? 私の実際のデータははるかに複雑なデータセットですが、これは私がやろうとしていることをまとめたものです。使用できます.locndarrays、ディムの順序がよくわからない場合、巨大で複雑になることがあります。

# Construct DataArray
DA = xr.DataArray(np.ndarray((3,3,5)), dims=["axis_A","axis_B","axis_C"], coords={"axis_A":["A_%d"%_ for _ in range(3)],
                                                                                  "axis_B":["B_%d"%_ for _ in range(3)],
                                                                                 "axis_C":["C_%d"%_ for _ in range(5)]})
# <xarray.DataArray (axis_A: 3, axis_B: 3, axis_C: 5)>
# array([[[ 0.,  0.,  0.,  0.,  0.],
#         [ 0.,  0.,  0.,  0.,  0.],
#         [ 0.,  0.,  0.,  0.,  0.]],

#        [[ 0.,  0.,  0.,  0.,  0.],
#         [ 0.,  0.,  0.,  0.,  0.],
#         [ 0.,  0.,  0.,  0.,  0.]],

#        [[ 0.,  0.,  0.,  0.,  0.],
#         [ 0.,  0.,  0.,  0.,  0.],
#         [ 0.,  0.,  0.,  0.,  0.]]])
# Coordinates:
#   * axis_B   (axis_B) <U3 'B_0' 'B_1' 'B_2'
#   * axis_A   (axis_A) <U3 'A_0' 'A_1' 'A_2'
#   * axis_C   (axis_C) <U3 'C_0' 'C_1' 'C_2' 'C_3' 'C_4'

# # Update? 
DA.sel(axis_A="A_1", axis_B="B_1", axis_C="C_1").values = 1
DA.max()
# # <xarray.DataArray ()>
# # array(0.0)

DA.sel(axis_A="A_1", axis_B="B_1", axis_C="C_1") = 1
# #  File "<ipython-input-17-8feb7332633f>", line 4
# #     DA.sel(axis_A="A_1", axis_B="B_1", axis_C="C_1") = 1
# #                                                         ^
# # SyntaxError: can't assign to function call
4

1 に答える 1

16

キーワード引数が角括弧内でサポートされていないという Python 構文の残念な制限により、これは非常に厄介です。

そのため、代わりに引数を.sel辞書として配置する必要があります.loc

DA.loc[dict(axis_A="A_1", axis_B="B_1", axis_C="C_1")] = 1
于 2016-10-13T20:42:41.097 に答える