我有一个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旋转的问题?
答案 0 :(得分:4)
scipy.ndimage.rotate
实际上是scipy.ndimage.interpolation.rotate
,它表示问题:数组中的值是内插的,并且用NaN插值任何内容都会产生NaN(同上且无穷大)。
显然,Gabriel建议的rot90只是切换元素,而不需要插值。通用rotate
需要插值,因为通过例如旋转42度不是元素的简单变化。
总而言之,我会说rotate
使用NaN。由于上述原因,只是不符合您的预期。
答案 1 :(得分:3)