python - numpy 数组乘以 10 得到错误的结果

标签 python numpy

我对 python2.7 numpy 数组进行了非常有线的测试。请看一下这段代码。

import numpy as np
times = np.arange(5., 85, 0.1)
print times
times = np.array(times * 10, dtype=np.int)
print times

原来的应该是[5.0 ~ 84.9]。乘以10后,应该变成[50 ~ 849],但结果是这样的:

[ 50 51 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 ...]
5052之间有两个51

最佳答案

问题是,您的第三个条目并不完全是 52.0 ,而是 51.999999999999993 (请参阅 Is floating point math broken? )。因此,截断该值会得到 51

正确的方法是首先对值进行舍入。 (正如 Safest way to convert float to integer in python? 中所指出的,所有足够小的整数都可以精确地表示为 float 。)因此,您必须计算:times = np.array(np.round(times * 10), dtype=np。 int)

关于python - numpy 数组乘以 10 得到错误的结果,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45769655/

相关文章:

python - 识别短文本的语言?

python - 计算k-means的方差百分比?

python - 在Python中计算矩阵中值的距离的有效方法

python - maya.standalone.initialize() 永远挂起

python - 为什么将 Gunicorn 与 GEvent 一起使用会增加对 Redis/数据库的查询时间?

python - 嵌套 NumPy 数组并使用拆分等方法

python - 将 Spyder IDE 图形窗口置于前面

c# - 从 C# 调用 Numpy 和 scikit-learn

python - Pandas convert_to_r_dataframe 函数 KeyError

python - Python为什么要四舍五入?