为什么导入了numpy模块后,计算结果发生了变化?

为什么导入了numpy模块后,计算结果发生了变化?

下面两段代码,结果运行不一样,想问下是什么原因?

print(sum(range(5),-1))

结果为 9

from numpy import *

print(sum(range(5),-1))

结果为 10


回答:

python自带的sum函数签名如下:

sum(iterable, [start])

后一个参数指定的是初始化值,会加到结果中去。故结果是-1+1+2+3+4=9。

numpy中sum函数签名为:

numpy.sum(a, axis=None, dtype=None, out=None, keepdims=<no value>, initial=<no value>)

不使用命名参数,-1传给了axis,结果为10。如果要指定初始值,这样用sum(range(1,5), initial=-1)


回答:

可以看一下不一定正确,原始的sum 是对两个值进行求和,而numpy.sum()此时你的-1会作为axis参数传递

@array_function_dispatch(_sum_dispatcher)

def sum(a, axis=None, dtype=None, out=None, keepdims=np._NoValue,

initial=np._NoValue, where=np._NoValue):

  • 测试代码

def hc(a, b=None, c=None):

print("参数a",a)

print("参数b",b)

print("参数c",c)

pass

hc(range(5),-1)

输出结果

参数a range(0, 5)

参数b -1

参数c None

以上是 为什么导入了numpy模块后,计算结果发生了变化? 的全部内容, 来源链接: utcz.com/p/937627.html

回到顶部