xarray 配列の値に非常に単純な「一致ステートメント」を適用する必要があります。
- 値 > 0 の場合は 2 にします
- 値 == 0 の場合、0 にする
- 値が の場合
NaN
、makeNaN
これが私の現在の解決策です。NaN
2D インデックスの代わりにs, .fillna
, & 型強制を使用しています。
valid = date_by_items.notnull()
positive = date_by_items > 0
positive = positive * 2
result = positive.fillna(0.).where(valid)
result
これにより、次のように変更されます。
In [20]: date_by_items = xr.DataArray(np.asarray((list(range(3)) * 10)).reshape(6,5), dims=('date','item'))
...: date_by_items
...:
Out[20]:
<xarray.DataArray (date: 6, item: 5)>
array([[0, 1, 2, 0, 1],
[2, 0, 1, 2, 0],
[1, 2, 0, 1, 2],
[0, 1, 2, 0, 1],
[2, 0, 1, 2, 0],
[1, 2, 0, 1, 2]])
Coordinates:
* date (date) int64 0 1 2 3 4 5
* item (item) int64 0 1 2 3 4
...これに:
Out[22]:
<xarray.DataArray (date: 6, item: 5)>
array([[ 0., 2., 2., 0., 2.],
[ 2., 0., 2., 2., 0.],
[ 2., 2., 0., 2., 2.],
[ 0., 2., 2., 0., 2.],
[ 2., 0., 2., 2., 0.],
[ 2., 2., 0., 2., 2.]])
Coordinates:
* date (date) int64 0 1 2 3 4 5
* item (item) int64 0 1 2 3 4
パンダにいる間はdf[df>0] = 2
十分でしょう。確かに私は歩行者のことをやっていますが、もっと簡潔な方法はありますか?