python-xarray - 使用 min_periods 和 reduce 时,xarray 滚动与 pandas 不匹配
问题描述
我正在使用特定的滚动窗口应用自定义函数min_periods
。输出pandas..rolling.apply
符合我的预期;但是, 的输出xarray..rolling.reduce
似乎没有考虑min_periods
在内。
MWE:
import numpy as np
import xarray
def custom(x, axis=0):
return np.mean(x, axis)
d = pd.DataFrame(np.random.rand(100,3))
r = d.rolling(10, min_periods=5).apply(custom)
print(r.iloc[0:10,:])
xd = d.to_xarray().to_array()
r = xd.rolling(index=10, min_periods=5).reduce(custom)
print(r[:,0:10])
r = xd.rolling(index=10, min_periods=1).reduce(custom)
print(r[:,0:10])
输出:
0 1 2
0 NaN NaN NaN
1 NaN NaN NaN
2 NaN NaN NaN
3 NaN NaN NaN
4 0.632168 0.523669 0.543643
5 0.558694 0.565781 0.481204
6 0.559343 0.541787 0.415490
7 0.613457 0.554888 0.398999
8 0.579552 0.496799 0.397681
9 0.562591 0.525096 0.416461
<xarray.DataArray (variable: 3, index: 10)>
array([[ nan, nan, nan, nan, nan, nan, nan,
nan, nan, 0.562591],
[ nan, nan, nan, nan, nan, nan, nan,
nan, nan, 0.525096],
[ nan, nan, nan, nan, nan, nan, nan,
nan, nan, 0.416461]])
Coordinates:
* index (index) int64 0 1 2 3 4 5 6 7 8 9
* variable (variable) int64 0 1 2
<xarray.DataArray (variable: 3, index: 10)>
array([[ nan, nan, nan, nan, nan, nan, nan,
nan, nan, 0.562591],
[ nan, nan, nan, nan, nan, nan, nan,
nan, nan, 0.525096],
[ nan, nan, nan, nan, nan, nan, nan,
nan, nan, 0.416461]])
Coordinates:
* index (index) int64 0 1 2 3 4 5 6 7 8 9
* variable (variable) int64 0 1 2
解决方案
推荐阅读
- python - 我在 django 模板中嵌套的 for 循环有什么问题?
- cobol - 创建 CSV 文档时如何删除空格
- java - 如何序列化和保存一堆对象?
- javascript - 如何检查是否至少有一个具有特定 url 的嵌套对象
- javascript - 如何自动播放音频?
- c# - Razor 引擎:在 & 的模板中生成 URL,生成 &
- python-3.x - 为什么即使我填充了年龄的空值,也没有填充它们?
- python - 熊猫删除具有多个字符串条件的行
- elasticsearch - elasticsearch搜索像sql中的“distint count”?
- rust - 库箱中多个可执行文件的文件布局