簡體   English   中英

為什么 Python 對相同的函數(例如“sum”或“and”)表現不同?

[英]Why does Python behave differently for the same function such as 'sum' or 'and'?

**

  • 場景一: sum

** 我發現在 numpy 中處理二維數組時,我意識到求和有不同的選項 - 即,Python 內置方法sum僅提供沿軸的求和,而 numpy sum提供總二維數組(矩陣)的求和)。

**

  • 場景 2: and&

**

我注意到邏輯和( and )按位和( & )都適用於相同的數據元素,但產生不同的結果。 事實上,邏輯和anddataframe 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]*3np.array([1,2,3])*3 "a"+"string"np.arange(3)+3

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM