7

我使用了 numpy 的 arange 函数来制作以下范围:

a = n.arange(0,5,1/2)

该变量本身可以正常工作,但是当我尝试将其放在脚本中的任何位置时,我收到一条错误消息

ZeroDivisionError:除以零

4

2 回答 2

6

首先,您的step评估为零(即在 python 2.x 上)。其次,您可能需要检查np.linspace是否要使用非整数步长。

Docstring:
arange([start,] stop[, step,], dtype=None)

Return evenly spaced values within a given interval.

[...]

When using a non-integer step, such as 0.1, the results will often not
be consistent.  It is better to use ``linspace`` for these cases.

In [1]: import numpy as np

In [2]: 1/2
Out[2]: 0

In [3]: 1/2.
Out[3]: 0.5

In [4]: np.arange(0, 5, 1/2.)  # use a float
Out[4]: array([ 0. ,  0.5,  1. ,  1.5,  2. ,  2.5,  3. ,  3.5,  4. ,  4.5])
于 2013-05-14T19:09:58.383 回答
2

如果您没有使用较新版本的 python(我认为是 3.1 或更高版本),则表达式 1/2 的计算结果为零,因为它假设整数除法。

您可以通过将 1/2 替换为 1./2 或 0.5 来解决此问题,或者将其放在from __future__ import division脚本的顶部。

于 2013-05-14T19:12:14.270 回答