我有一个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.由于上述原因,只是不符合您的预期.