numpy 使用Scipy.ndimage在Np.Nan值内旋转数组

qrjkbowd  于 12个月前  发布在  其他
关注(0)|答案(1)|浏览(103)

我有一个高程阵列从.tif激光雷达表面。下面的数组示例。

from scipy.ndimage import rotate
import numpy as np
test_surface_nan =  [[np.nan, np.nan, np.nan, np.nan, np.nan, np.nan, np.nan],
                     [np.nan, np.nan, np.nan,   1,    np.nan, np.nan, np.nan],
                     [np.nan, np.nan,   1,      2,      1,    np.nan, np.nan],
                     [np.nan,   1,      2,      3,      2,      1,    np.nan],
                     [np.nan, np.nan,   1,      2,      1,    np.nan, np.nan],
                     [np.nan, np.nan, np.nan,   1,    np.nan, np.nan, np.nan],
                     [np.nan, np.nan, np.nan, np.nan, np.nan, np.nan, np.nan]]

我尝试使用以下代码旋转test_surface_nan中的值,使值以row[1]开头。

test_surface_array_nan = np.array(test_surface_nan)
test_surface_array_nan_rotated = rotate(test_surface_array_nan,45,reshape=True)

我收到下面的数组。为什么大于0的元素变成了np.nan值,np.nan值变成了0?

这绝对不是我在看scipy.ndimage.rotate website时所期待的
我的期望是沿着下面的例子

maybe_test_surface_nan =  [  [np.nan, np.nan, np.nan, np.nan, np.nan, np.nan, np.nan],
                             [np.nan,    1,   np.nan,   1,    np.nan,    1,   np.nan],
                             [np.nan, np.nan,   2,    np.nan,   2,    np.nan, np.nan],
                             [np.nan,    1,   np.nan,   3,    np.nan,    1,   np.nan],
                             [np.nan, np.nan,   2,    np.nan,   2,    np.nan, np.nan],
                             [np.nan,    1, np.nan,     1,    np.nan,    1,   np.nan],
                             [np.nan, np.nan, np.nan, np.nan, np.nan, np.nan, np.nan]]
yacmzcpb

yacmzcpb1#

问题出在控制插值的order=参数中。尝试将此参数设置为0

test_surface_array_nan_rotated = rotate(
    test_surface_array_nan, 45, reshape=True, order=0
)

print(test_surface_array_nan_rotated)

图纸:

[[ 0.  0.  0.  0.  0.  0.  0.  0.  0.  0.]
 [ 0.  0.  0.  0. nan nan  0.  0.  0.  0.]
 [ 0.  0.  0. nan nan nan nan  0.  0.  0.]
 [ 0.  0. nan  1.  1.  1.  1. nan  0.  0.]
 [ 0. nan nan  1.  2.  2.  1. nan nan  0.]
 [ 0. nan nan  1.  2.  2.  1. nan nan  0.]
 [ 0.  0. nan  1.  1.  1.  1. nan  0.  0.]
 [ 0.  0.  0. nan nan nan nan  0.  0.  0.]
 [ 0.  0.  0.  0. nan nan  0.  0.  0.  0.]
 [ 0.  0.  0.  0.  0.  0.  0.  0.  0.  0.]]

相关问题