mac*_*sme 1 python 64-bit scipy
我想使用scipy.fftpack中的dct功能和一个numpy float64数组.但是,它似乎只针对np.float32实现.有什么快速的解决方法可以做到这一点吗?我很快调查了它,但我不确定所有依赖项.所以,在搞乱一切之前,我想我会在这里寻求提示!
到目前为止我唯一能找到的就是这个链接:http://mail.scipy.org/pipermail/scipy-svn/2010-September/004197.html
提前致谢.
这是它引发的ValueError:
---------------------------------------------------------------------------
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
Run Code Online (Sandbox Code Playgroud)
问题不在于双精度.当然支持双精度.问题是,你有一点点端计算机和(可能加载从一个文件一个文件?)有大端数据,请注意>在dtype >f8 not supported.看来你只需要将它自己投射到原生双.如果您知道它的双精度,您可能只想将everytiong转换为您的本机顺序一次:
c = c.astype(float)
Run Code Online (Sandbox Code Playgroud)
虽然我猜你也可以检查一下c.dtype.byteorder我认为应该是什么'=',以及是否切换......
if c.dtype.byteorder != '=':
c = c.astype(c.dtype.newbyteorder('='))
Run Code Online (Sandbox Code Playgroud)
如果您碰巧有单精度或整数,哪个也应该有效...
| 归档时间: |
|
| 查看次数: |
2238 次 |
| 最近记录: |