mik*_*ike 4 python arrays numpy rounding subtraction
我遇到了一个问题,当从一个浮点数中减去一个数组时,python会自动舍入非常小的数字(小于1e-8).举个例子:
import numpy as np
float(1) - np.array([1e-10, 1e-5])
Run Code Online (Sandbox Code Playgroud)
关于如何强迫python不要圆的任何想法?这迫使我在某些情况下除以零,并成为一个问题.从numpy数组中减去时会出现同样的问题.
大多数情况下,它只是repr那些愚弄你的numpy数组.
考虑上面的例子:
import numpy as np
x = float(1) - np.array([1e-10, 1e-5])
print x
print x[0]
print x[0] == 1.0
Run Code Online (Sandbox Code Playgroud)
这会产生:
[ 1. 0.99999 ]
0.99999999999
False
Run Code Online (Sandbox Code Playgroud)
所以第一个元素实际上并不是零,它只是那些以这种方式显示的numpy数组的漂亮打印.
这可以通过控制numpy.set_printoptions.
当然,numpy使用有限精度的浮子来实现.numpy的重点是成为类似数据数组的内存高效容器,所以decimal在numpy中没有相应的类.
但是,64位浮点数具有相当的精度范围.你不会在1e-10和1e-5上遇到太多问题.如果需要,还有一个numpy.float128dtype,但操作比使用本机浮动要慢得多.
| 归档时间: |
|
| 查看次数: |
1822 次 |
| 最近记录: |