我需要对xarray数组中的值应用一个非常简单的'match statement':
NaN,制造NaN这是我目前的解决方案.我正在使用NaNs ,, .fillna和类型强制来代替2d索引.
valid = date_by_items.notnull()
positive = date_by_items > 0
positive = positive * 2
result = positive.fillna(0.).where(valid)
result
Run Code Online (Sandbox Code Playgroud)
这改变了这个:
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, …Run Code Online (Sandbox Code Playgroud)