首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >scipy、fftpack和float64

scipy、fftpack和float64
EN

Stack Overflow用户
提问于 2012-09-07 03:54:55
回答 1查看 2.6K关注 0票数 1

我想通过一个numpy float64数组来使用scipy.fftpack的dct功能。然而,它似乎只为np.float32实现。有什么快速的解决方法可以让我完成这项工作吗?我很快地研究了它,但我不确定所有的依赖关系。所以,在把事情搞得一团糟之前,我想我应该在这里请教一下技巧!

到目前为止,我找到的唯一一件事是这个链接:http://mail.scipy.org/pipermail/scipy-svn/2010-September/004197.html

提前谢谢。

下面是它引发的ValueError:

代码语言:javascript
复制
---------------------------------------------------------------------------
ValueError                                Traceback (most recent call last)
<ipython-input-12-f09567c28e37> in <module>()
----> 1 scipy.fftpack.dct(c[100])

/usr/local/Cellar/python/2.7.3/lib/python2.7/site-packages/scipy/fftpack/realtransforms.pyc in dct(x, type, n, axis, norm, overwrite_x)
    118         raise NotImplementedError(
    119               "Orthonormalization not yet supported for DCT-I")
--> 120     return _dct(x, type, n, axis, normalize=norm, overwrite_x=overwrite_x)
    121 
    122 def idct(x, type=2, n=None, axis=-1, norm=None, overwrite_x=0):

/usr/local/Cellar/python/2.7.3/lib/python2.7/site-packages/scipy/fftpack/realtransforms.pyc in _dct(x, type, n, axis, overwrite_x, normalize)
    215             raise ValueError("Type %d not understood" % type)
    216     else:
--> 217         raise ValueError("dtype %s not supported" % tmp.dtype)
    218 
    219     if normalize:

ValueError: dtype >f8 not supported
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2012-09-07 05:02:01

问题不在于双精度。双精度当然是受支持的。问题是你有一台小的endian计算机(也许从一个文件加载一个文件?)有大量的字节顺序数据,请注意dtype >f8 not supported中的>。看起来你只需要简单地将它转换为你自己的本地double。如果你知道它的双精度,你可能只想把所有东西都转换成你的原生顺序一次:

代码语言:javascript
复制
c = c.astype(float)

虽然我猜你也可以检查c.dtype.byteorder,我认为它应该是'=',如果是,切换...一些相关的东西:

代码语言:javascript
复制
if c.dtype.byteorder != '=':
    c = c.astype(c.dtype.newbyteorder('=')) 

如果你碰巧有单精度或整数,它也应该起作用。

票数 5
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/12307429

复制
相关文章

相似问题

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