可能是`np.mgrid`的错误?

时间:2017-10-10 06:36:13

标签: python numpy debugging

在以下代码段中,128.99包含在输出中,根据定义,它不应包含在内。这是一个错误吗?使用python2和python3进行测试。

In [38]: np.mgrid[119.99:128.99, 0:2] 
Out[38]: 
array([[[ 119.99,  119.99],
    [ 120.99,  120.99],
    [ 121.99,  121.99],
    [ 122.99,  122.99],
    [ 123.99,  123.99],
    [ 124.99,  124.99],
    [ 125.99,  125.99],
    [ 126.99,  126.99],
    [ 127.99,  127.99],
    [ 128.99,  128.99]],

   [[   0.  ,    1.  ],
    [   0.  ,    1.  ],
    [   0.  ,    1.  ],
    [   0.  ,    1.  ],
    [   0.  ,    1.  ],
    [   0.  ,    1.  ],
    [   0.  ,    1.  ],
    [   0.  ,    1.  ],
    [   0.  ,    1.  ],
    [   0.  ,    1.  ]]])

1 个答案:

答案 0 :(得分:2)

使用两个参数调用的

np.mgrid将使用从开始到停止的项填充相应的范围。

要确定步数,使用的公式是(参见source):

math.ceil((key[k].stop - start)/(step*1.0))

默认情况下,步骤为1。在您的情况下,stop-start为9.000000000000014,以便ceil函数的舍入生成10个步骤,步骤1:119.99 + 9 = 128.99

所以,这里没有错误。

如果依赖于mgrid中的项目数,请使用复杂的步骤索引:

np.mgrid[119.99:127.99:9j, 0:2].

请注意,现在“停止”点是包含在内的docs

相关问题