我对 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 ...]
50
和52
之间有两个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/