![](/img/trans.png)
[英]Why does completely same function behave differently in ipython/jupyter?
[英]Why does Python behave differently for the same function such as 'sum' or 'and'?
**
sum
** 我发现在 numpy 中处理二维数组时,我意识到求和有不同的选项 - 即,Python 内置方法sum
仅提供沿轴的求和,而 numpy sum
提供总二维数组(矩阵)的求和)。
**
and
与&
**
我注意到逻辑和( and
)按位和( &
)都适用于相同的数据元素,但产生不同的结果。 事实上,逻辑和and
在dataframe
series
中不起作用,而按位和&
工作得很好。
为什么会发生这种情况? 任何人都可以根据语言的历史、设计、目的等提供见解,以便更好地理解吗?
问候 Ssp
numpy
在 Python 中运行,并从ndarray
类方法和模块函数中获取其所有特殊行为。 它不会改变 Python 语法。
Python sum
将其输入视为可迭代的; 用一维数组很容易理解,就像在列表上操作一样。 但在二维数组上,更难理解:
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 and
是一个短路运算符。 像if
语句一样,它与 numpy 数组一起使用很可能会产生ambiguity
错误。 数组的比较产生布尔数组。 不能在需要标量布尔值的 Python 上下文中使用布尔数组。
+
、 *
&
等运算符具有特定于类的含义/方法。 [1,2,3]*3
与np.array([1,2,3])*3
。 "a"+"string"
与np.arange(3)+3
。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.