我正在阅读numpy.arange文档,并想亲自尝试一些事情。 (numpy版本1.14.5)
这是我的代码:
print(np.arange(start=5))
我不确定我的期望是什么,但绝对不是这样:
[0 1 2 3 4]
我应该如何阅读文档和功能签名,以便了解发生了什么?显然start
是0
,而stop
是5
,但这是如何工作的?请注意,我是Python的初学者,所以这可能是我对方法的可选参数缺乏了解。
答案 0 :(得分:2)
numpy.arange
的签名记录为numpy.arange([start, ]stop, [step, ]dtype=None)
,表示start
和step
是可选的,并且如果提供了一个位置参数,则将其视为为stop
...,但在实现中更像
def arange(start, stop=None, step=None, dtype=None):
...
我说“更喜欢”是因为它是用C语言编写的,the implementation实际上看起来不是那样,但是它基本上是那样工作的。
如果arange
收到一个位置参数,它将作为终止值处理,但仍将其作为start
参数接收。为了解决这个问题,对arange
进行了编码,以便如果它收到start
而没有收到stop
或step
时,它将把start
当作终止值。 。不幸的是,当它收到关键字start
时,这种情况仍然适用,从而导致您陷入混乱的境地。
答案 1 :(得分:0)
np.arange
同时需要start
和stop
。如果仅提供一个参数,它将被解释为stop
,而start
将默认为0
。这就是这里发生的事情。
可能的用法是:
np.arange(stop) # assumes start=0, step=1
np.arange(start, stop) # assumes step=1
np.arange(start, stop, step)
np.arange(start)
毫无意义,因为没有可停止的“有意义的默认”数字...