python – scipy ndimage.rotate不适用于np.nan值

我有一个2维numpy数组,在numpy数组中的某处有np.nan值.

现在我试图将数组旋转90度.但是,scipy.ndimage.rotate不起作用.

这是一个简单的测试:

import numpy as np
from scipy import ndimage

a = np.array([[1, 2,], [3, 4]])
b = np.array([[np.nan, 2], [3, 4]])

ndimage.rotate(a, 90)
# result:
# array([[2, 4],
#        [1, 3]])

ndimage.rotate(b, 90)
# result:
# array([[ nan,  nan],
#        [ nan,  nan]])

有没有办法解决ndimage旋转的问题?

最佳答案 scipy.ndimage.rotate实际上是scipy.ndimage.interpolation.rotate,它指示了问题:数组中的值被内插,并用NaN内插任何东西,将导致NaN(同上,无穷大).

显然,Gabriel建议的rot90只是切换元素,而不需要插值.通用旋转需要插值,因为通过例如旋转42度不是元素的简单变化.

总而言之,我会说旋转确实适用于NaN.由于上述原因,只是不符合您的预期.

点赞