Python等价于IDL median()和rot()

Python等价于IDL median()和rot(),python,rotation,median,idl-programming-language,Python,Rotation,Median,Idl Programming Language,我正在使用fits图像并尝试将IDL代码翻译成python,但我在理解如何翻译IDLmedia()和rot()函数时遇到了困难。我有一个数组im\u-darksub,即(ny,nx,n\u-im),其中nx,ny是每个图像的形状,n\u-im是图像的数量(总共处理12个图像)。我试图翻译IDL代码im_median=median(im_darksub,dimension=1)和im_medrot=rot(im_median,85,cubic=-0.5)。我原以为我可以把它翻译成np.median

我正在使用fits图像并尝试将IDL代码翻译成python,但我在理解如何翻译IDL
media()
rot()
函数时遇到了困难。我有一个数组
im\u-darksub
,即
(ny,nx,n\u-im)
,其中
nx,ny
是每个图像的形状,
n\u-im
是图像的数量(总共处理12个图像)。我试图翻译IDL代码
im_median=median(im_darksub,dimension=1)
im_medrot=rot(im_median,85,cubic=-0.5)
。我原以为我可以把它翻译成
np.median()
spirce.misc.imrotate
,但当我使用
imrotate
时,我一直收到一个错误:

    Traceback (innermost last):
      File "<console>", line 1, in <module>
      File "/Users/courtneywatson1/Ureka/python/lib/python2.7/site-packages/scipy/misc/pilutil.py", line 345, in imrotate
        im = toimage(arr)
      File "/Users/courtneywatson1/Ureka/python/lib/python2.7/site-packages/scipy/misc/pilutil.py", line 234, in toimage
        raise ValueError("'arr' does not have a suitable array shape for "
    ValueError: 'arr' does not have a suitable array shape for any mode.
回溯(最里面的最后一个):
文件“”,第1行,在
imrotate中的文件“/Users/courtneywatson1/Ureka/python/lib/python2.7/site packages/scipy/misc/pilutil.py”,第345行
im=toimage(arr)
文件“/Users/courtneywatson1/Ureka/python/lib/python2.7/site packages/scipy/misc/pilutil.py”,第234行,在toimage中
raise VALUERROR(“'arr'没有适合的数组形状”
ValueError:“arr”没有适合任何模式的数组形状。
我猜这是因为我的图像数组多于2或3D?IDL
media()
rot()
函数是否有python等价物,就像我使用它们的方式一样?

这对我很有用:

import numpy as np
x = np.arange(100)
x = np.reshape(x, (5, 5, 4))
im_median = np.median(x, axis=2)

import scipy.misc
im_rotate = scipy.misc.imrotate(y, 85, 'cubic')
我假设您看到
imrotate
已被弃用:

/Users/mgalloy/anaconda3/bin/ipython:1: DeprecationWarning: `imrotate` is deprecated!
`imrotate` is deprecated in SciPy 1.0.0, and will be removed in 1.2.0.
Use ``skimage.transform.rotate`` instead.
这似乎很管用:

import skimage.transform
im_rotate = skimage.transform.rotate(im_median, 85, order=3, preserve_range=True)

在调用
median
后检查
im\u median
的形状,即
print(im\u median.shape)
。是否有大小为1的维度?谢谢!这很有效。我想我对将idl
维度
转换为numpy
轴感到困惑。