为什么Python对同一个函数(如';总和';或';和';?
**为什么Python对同一个函数(如';总和';或';和';?,python,numpy,numpy-ndarray,Python,Numpy,Numpy Ndarray,** 情景1:sum ** 我发现在numpy中处理2d数组时,我意识到求和有不同的选项,即Python内置方法sum仅提供沿轴的求和,而numpysum提供整个2d数组(矩阵)的求和 ** 情景2:和与和 ** 我注意到逻辑and(和)按位and(&)都在同一个数据元素上工作,但产生不同的结果。事实上,逻辑and和和在数据帧的系列中不起作用,而按位and和和工作正常 为什么会发生这种情况?有人能根据语言的历史、设计、用途等提供见解,以便更好地理解吗 问候 Sspnumpy在Python
- 情景1:
sum
sum
仅提供沿轴的求和,而numpysum
提供整个2d数组(矩阵)的求和
**
- 情景2:
与和
和
和
)按位and(&
)都在同一个数据元素上工作,但产生不同的结果。事实上,逻辑and和和在数据帧的系列中不起作用,而按位and和和工作正常
为什么会发生这种情况?有人能根据语言的历史、设计、用途等提供见解,以便更好地理解吗
问候
Sspnumpy
在Python中运行,并从ndarray
类方法和模块函数获取其所有特殊行为。它不会改变Python语法
Pythonsum
将其输入视为一个iterable;使用一维数组很容易理解,就像在列表上操作一样。但在2d阵列上,更难理解:
In [52]: x = np.arange(12).reshape(3,4)
In [53]: sum(x)
Out[53]: array([12, 15, 18, 21]) # what's this doing?
In [54]: x.sum() # or np.sum(x)
Out[54]: 66
In [55]: x.sum(axis=0)
Out[55]: array([12, 15, 18, 21]) # sum down rows, one per column
In [56]: x.sum(axis=1)
Out[56]: array([ 6, 22, 38]) # sum across columns, one per row
Python和
是一个短路运算符。与if
语句类似,它与numpy数组一起使用可能会产生歧义
错误。数组的比较产生布尔数组。布尔数组不能在需要标量布尔值的Python上下文中使用
像+
,*
,&
这样的运算符具有特定于类的含义/方法[1,2,3]*3
不同于np.array([1,2,3])*3
“字符串”
不同于np.arange(3)+3
,,
只接受左操作数的真实性。如果该真实性为False
则“返回”第一个操作数,否则返回正确的操作数。但并非所有对象都具有真实性。关于sum
,该函数只是对给定参数中的元素求和。数组一次迭代一行,因此sum(a)
是在添加行,而不是数组的元素。这基本上是一种设计折衷:一个类型只能有一种迭代器,对于数组迭代器来说,生成行而不是单个元素可能更有用或更合乎逻辑。另外一个sum
方法可以自由定义,但是很有用。谢谢。为什么不通过答案提供这些信息,这样你们就可以获得学分?