首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >Python相当于IDL median()和rot()

Python相当于IDL median()和rot()
EN

Stack Overflow用户
提问于 2018-07-07 03:30:46
回答 1查看 243关注 0票数 0

我正在处理fits图像,并试图将IDL代码转换为python,但我在理解如何转换IDL、median()rot()函数时遇到了麻烦。我有一个数组im_darksub,它是(ny, nx, n_im),其中nx,ny是每个图像的形状,n_im是图像的数量(总共处理12个图像)。我尝试翻译IDL代码im_median = median(im_darksub,dimension=1)im_medrot = rot(im_median,85,cubic=-0.5)。我认为我可以将其转换为np.median()spicy.misc.imrotate,但是当我使用imrotate时,我总是得到一个错误

代码语言:javascript
复制
    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.

我猜这是因为我的图像数组大于2或3D?对于我使用的IDL、median()rot()函数,有没有python的等价物?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2018-07-07 08:36:03

这对我很有效:

代码语言:javascript
复制
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已被弃用:

代码语言:javascript
复制
/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.

这似乎工作得很好:

代码语言:javascript
复制
import skimage.transform
im_rotate = skimage.transform.rotate(im_median, 85, order=3, preserve_range=True)
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/51216645

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档