包括端点时numpy.linspace中的精度损失

时间:2019-06-23 21:33:12

标签: python python-3.x numpy itertools

我试图遍历两个窗口linspace的乘积,以探索一个空间。当我包含端点时,我似乎失去了linspace的精度。我会以某种方式乱码吗?是否有一些numpy可以做到这一点?

这是一些演示代码。我更新了numpy以期寻求修复,但这没有帮助(1.16.4,python 3.7.3)。

import numpy as np
import itertools

# Windowing func from old itertools docs
def window(seq, n=2):
    "Returns a sliding window (of width n) over data from the iterable"
    "   s -> (s0,s1,...s[n-1]), (s1,s2,...,sn), ...                   "
    it = iter(seq)
    result = tuple(itertools.islice(it, n))
    if len(result) == n:
        yield result
    for elem in it:
        result = result[1:] + (elem,)
        yield result

for (a,b) in itertools.product(window(np.linspace(12, 13, 10, endpoint=False)), window(np.linspace(20,21,10, endpoint=False))):
    print(a, b)
for (a,b) in itertools.product(window(np.linspace(12, 13, 10, endpoint=True)), window(np.linspace(20,21,10, endpoint=True))):
    print(a, b)

没有端点:

(12.0, 12.1) (20.0, 20.1)
(12.0, 12.1) (20.1, 20.2)
(12.0, 12.1) (20.2, 20.3)
...

具有端点:

(12.0, 12.11111111111111) (20.0, 20.11111111111111)
(12.0, 12.11111111111111) (20.11111111111111, 20.22222222222222)
(12.0, 12.11111111111111) (20.22222222222222, 20.333333333333332)
...

1 个答案:

答案 0 :(得分:0)

您想要的linspace输出具有 11 元素,但是您要的是10。要求11。