为什么Python对同一个函数(如“sum”或“and”)的行为不同?

2024-06-17 13:06:38 发布

您现在位置:Python中文网/ 问答频道 /正文

**

  • 情景一:sum

你知道吗** 我发现在numpy中处理2d数组时,我意识到求和有不同的选项,即Python内置方法sum只提供沿轴的求和,而numpy sum提供整个2d数组(矩阵)的求和。你知道吗

**

  • 情景2:and&

**

我注意到逻辑and(and)按位and(&)都工作在同一个数据元素上,但产生不同的结果。事实上,逻辑and anddataframeseries范围内不起作用,而按位and &工作得很好。你知道吗

为什么会这样?有人能根据语言的历史、设计、目的等提供见解,以便更好地理解吗?你知道吗

敬礼 单一共享平台


Tags: and数据方法numpy元素dataframe选项矩阵
1条回答
网友
1楼 · 发布于 2024-06-17 13:06:38

这就是它的设计方式。nparray属于numpy,它有一个自然的总和来概括整个结构。但是Python中的一个没有递归的特性。你知道吗

网友
2楼 · 发布于 2024-06-17 13:06:38

numpy在Python中操作,并从ndarray类方法和模块函数获取其所有特殊行为。它不改变Python语法。你知道吗

Pythonsum将其输入视为一个iterable;使用1d数组很容易理解,这就像对列表进行操作一样。但在二维阵列上,更难理解:

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

Pythonand是一个短路运算符。与if语句一样,它与numpy数组一起使用可能会产生ambiguity错误。数组的比较产生布尔数组。布尔数组不能在需要标量布尔值的Python上下文中使用。你知道吗

+*&这样的运算符具有类特定的含义/方法。[1,2,3]*3np.array([1,2,3])*3不同。"a"+"string"np.arange(3)+3不同。你知道吗

相关问题 更多 >