为什么会这样
print "{:e}".format(array([1e-10],dtype="float64")[0])
1.000000e-10
但不是这个?
print "{:e}".format(array([1e-10],dtype="float32")[0])
---------------------------------------------------------------------------
ValueError Traceback (most recent call last)
<ipython-input-29-9a0800b4df65> in <module>()
----> 1 print "{:e}".format(array([1e-10],dtype="float32")[0])
ValueError: Unknown format code 'e' for object of type 'str
更新:我尝试使用 numpy 版本 1.6.1 和 Python 2.7.3。
me@serv8:~$ python -V
Python 2.7.3
me@serv8:~$ python -c "import numpy; print numpy.__version__"
1.6.1
me@serv8:~$ python -c "from numpy import array; print \"{:e}\".format(array([1e-10],dtype=\"float32\")[0])"
Traceback (most recent call last):
File "<string>", line 1, in <module>
ValueError: Unknown format code 'e' for object of type 'str'
Numpy 错误 #1675
这是在 Numpy 1.6.2 中修复的错误 (Change log here) .
分析
嗯...看起来我们可以得到类型:
>>> from numpy import array
>>> a64 = array([1e-10],dtype="float64")[0]
>>> a32 = array([1e-10],dtype="float32")[0]
>>> type(a32)
<type 'numpy.float32'>
>>> type(a64)
<type 'numpy.float64'>
那么,让我们现在尝试打印:
>>> print a32
1e-10
>>> print a64
1e-10
好的,这似乎有效。让我们尝试使用指数符号打印:
>>> print('{0:e}'.format(a64))
1.000000e-10
>>> print('{0:e}'.format(a32))
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
ValueError: Unknown format code 'e' for object of type 'str'
通过谷歌搜索,我发现了与错误 #1675 的类似引用,该错误据称已在 Numpy 1.6.2 版中修复。 (Change log here)
基于此,我随后安装了1.6.2并尝试了您上面的尝试。有用。
>>> from numpy import array
>>> print "{:e}".format(array([1e-10],dtype="float64")[0])
1.000000e-10
>>> print "{:e}".format(array([1e-10],dtype="float32")[0])
1.000000e-10
我是一名优秀的程序员,十分优秀!