Python 为什么numpy.arange函数的start参数实际上决定stop?
我正在阅读文档,想自己尝试一些东西。(numpy版本1.14.5) 这是我的密码:Python 为什么numpy.arange函数的start参数实际上决定stop?,python,numpy,Python,Numpy,我正在阅读文档,想自己尝试一些东西。(numpy版本1.14.5) 这是我的密码: print(np.arange(start=5)) 我不确定我的期望是什么,但肯定不是这样: [0 1 2 3 4] 我应该如何阅读文档和函数签名,以便了解这里发生了什么?显然start这里是0,stop是5,但是这是如何工作的呢?请注意,我是Python的初学者,所以这可能是因为我缺乏关于方法的可选参数的知识 np.arange既需要启动也需要停止。如果您只提供一个参数,它将被解释为stop,start将默
print(np.arange(start=5))
我不确定我的期望是什么,但肯定不是这样:
[0 1 2 3 4]
我应该如何阅读文档和函数签名,以便了解这里发生了什么?显然
start
这里是0
,stop
是5
,但是这是如何工作的呢?请注意,我是Python的初学者,所以这可能是因为我缺乏关于方法的可选参数的知识 np.arange
既需要启动
也需要停止
。如果您只提供一个参数,它将被解释为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)
没有意义,因为没有“有意义的默认”数字来停止 np.arange
既需要启动
也需要停止
。如果您只提供一个参数,它将被解释为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)
没有意义,因为没有“有意义的默认”数字来停止 numpy.arange
的签名记录为numpy.arange([start,]stop,[step,]dtype=None)
,表示start
和step
是可选的,如果提供了一个位置参数,它将被视为stop
。。。但在实现中,它更像
def arange(start, stop=None, step=None, dtype=None):
...
我之所以说“更像”,是因为它是用C写的,实际上看起来不像,但它的工作原理基本上是这样的
如果
arange
接收到一个位置参数,它会将其视为停止值,但仍会将其作为start
参数接收。为了处理这个问题,arange
被编码,如果它收到start
并且没有stop
或步骤
,它将把start
作为停止值。不幸的是,当它通过关键字接收到start
时,这仍然适用,导致您陷入混乱的境地。numpy.arange
的签名记录为numpy.arange([start,]stop,[step,]dtype=None)
,表明start
和step
是可选的,如果提供了一个位置参数,它将被视为stop
。。。但在实现中,它更像
def arange(start, stop=None, step=None, dtype=None):
...
我之所以说“更像”,是因为它是用C写的,实际上看起来不像,但它的工作原理基本上是这样的
如果
arange
接收到一个位置参数,它会将其视为停止值,但仍会将其作为start
参数接收。为了处理这个问题,arange
被编码,如果它收到start
并且没有stop
或步骤
,它将把start
作为停止值。不幸的是,当它接收到start
by关键字时,这仍然适用,这导致了您所处的混乱局面。当我尝试foo=5
而不是start=5
时,我得到类型错误:必需的参数“start”(位置1)找不到
?另外,stop=5
将导致TypeError:Required argument'start'(pos 1)找不到
,这非常令人困惑。您需要阅读python如何处理位置参数,这不是C…感谢您的努力,但我不确定您的答案是否对我有帮助。不过谢谢。为什么当我尝试foo=5
而不是start=5
时,我得到了TypeError:Required参数“start”(pos 1)没有找到
?而且stop=5
会导致TypeError:Required参数“start”(pos 1)找不到
,这非常令人困惑。您需要了解python如何处理位置参数,这不是C。感谢您的努力,但我不确定您的答案是否对我有帮助。谢谢。但是为什么foo=5
会导致TypeError:找不到必需的参数“start”(位置1)
?@KorayTugay:因为您没有提供start
值,而且start
是必需的。因此,如果我只能通过查看文档来猜测结果会是什么,那么我认为TypeError
与start=5
之间会出现,TypeError
是一个合理的期望值。但是为什么foo=5
会导致TypeError:找不到必需的参数“start”(位置1)
?@KorayTugay:因为您没有提供start
值,而且start
是必需的。因此,如果我只能通过查看文档来猜测结果会是什么,那么我认为type error
与start=5
之间出现TypeError
就不会大错特错了。@KorayTugay:从文档来看,一个TypeError
是一个合理的期望。arange
在某种程度上是,与Python的range
等效的numpy<代码>范围
不接受关键字参数,只接受1-3个位置参数arange
不是探索可选参数使用的好函数。arange
在某种程度上是Python的numpy
等价物range
<代码>范围
不接受关键字参数,只接受1-3个位置参数arange
不是探索可选参数使用的好函数。