【发布时间】:2019-10-29 23:43:10
【问题描述】:
这个问题是shift numpy array by row的延伸
如果我 shift(来自 scipy.ndimage.interpolation)像这样使用测试 3 x 5 x 5 数组,那么一切都按预期工作:
arr = np.ones([3,5,5])
array([[[ 1., 1., 1., 1., 1.],
[ 1., 1., 1., 1., 1.],
[ 1., 1., 1., 1., 1.],
[ 1., 1., 1., 1., 1.],
[ 1., 1., 1., 1., 1.]],
[[ 1., 1., 1., 1., 1.],
[ 1., 1., 1., 1., 1.],
[ 1., 1., 1., 1., 1.],
[ 1., 1., 1., 1., 1.],
[ 1., 1., 1., 1., 1.]],
[[ 1., 1., 1., 1., 1.],
[ 1., 1., 1., 1., 1.],
[ 1., 1., 1., 1., 1.],
[ 1., 1., 1., 1., 1.],
[ 1., 1., 1., 1., 1.]]])
shift(arr,(1,0,0), cval=np.nan)
array([[[ nan, nan, nan, nan, nan],
[ nan, nan, nan, nan, nan],
[ nan, nan, nan, nan, nan],
[ nan, nan, nan, nan, nan],
[ nan, nan, nan, nan, nan]],
[[ 1., 1., 1., 1., 1.],
[ 1., 1., 1., 1., 1.],
[ 1., 1., 1., 1., 1.],
[ 1., 1., 1., 1., 1.],
[ 1., 1., 1., 1., 1.]],
[[ 1., 1., 1., 1., 1.],
[ 1., 1., 1., 1., 1.],
[ 1., 1., 1., 1., 1.],
[ 1., 1., 1., 1., 1.],
[ 1., 1., 1., 1., 1.]]])
但是,如果我对 3 x 5 x 5 数据数组执行相同的移位,我会得到所有 np.nan 值:
array([[[ 0. , nan, nan, nan, nan],
[ nan, 0. , nan, nan, -1.07346633],
[ nan, nan, 0. , nan, nan],
[ nan, nan, nan, 0. , nan],
[ nan, 1.07346633, nan, nan, 0. ]],
[[ 0. , nan, nan, nan, nan],
[ nan, 0. , nan, nan, nan],
[ nan, nan, 0. , -1.44470265, nan],
[ nan, nan, 1.44470265, 0. , nan],
[ nan, nan, nan, nan, 0. ]],
[[ 0. , nan, 1.80965682, nan, nan],
[ nan, 0. , nan, nan, nan],
[-1.80965682, nan, 0. , nan, nan],
[ nan, nan, nan, 0. , nan],
[ nan, nan, nan, nan, 0. ]]])
shift(stats1_arr,(1,0,0), cval=np.nan)
array([[[ nan, nan, nan, nan, nan],
[ nan, nan, nan, nan, nan],
[ nan, nan, nan, nan, nan],
[ nan, nan, nan, nan, nan],
[ nan, nan, nan, nan, nan]],
[[ nan, nan, nan, nan, nan],
[ nan, nan, nan, nan, nan],
[ nan, nan, nan, nan, nan],
[ nan, nan, nan, nan, nan],
[ nan, nan, nan, nan, nan]],
[[ nan, nan, nan, nan, nan],
[ nan, nan, nan, nan, nan],
[ nan, nan, nan, nan, nan],
[ nan, nan, nan, nan, nan],
[ nan, nan, nan, nan, nan]]])
我做错了什么(误用 shift?)还是这是一个错误?似乎是scipy.ndimage.interpolation.shift 中的一个错误
【问题讨论】: