您現在的位置是:首頁 > 手機遊戲首頁手機遊戲

NumPy庫中的基本操作

簡介對於多維陣列,這些運算子仍然是元素級

矩陣完全加括號是什麼意思

基本操作

如今我們已經知曉如何使用numpy庫進行陣列的定義以及新建,下面我們就該來學習陣列的各種運算方法了。

算術運算子

陣列的第一類運算是使用算術運算子進行的運算。最顯而易見的是為陣列加上或乘以一個標量。

NumPy庫中的基本操作

這些運算子還可以用於兩個陣列的運算。在NumPy中,這些運算子為元素級。也就是說,它們只用於位置相同的元素之間,所得到的運算結果組成一個新的陣列。運算結果在新陣列中的位置相同。

NumPy庫中的基本操作

此外,這些運算子還適用於返回值為NumPy陣列的函式。例如,你可以用陣列a乘上陣列b的正弦值或平方根。

NumPy庫中的基本操作

對於多維陣列,這些運算子仍然是元素級。

NumPy庫中的基本操作

矩陣積

選擇使用*號作為元素級運算子是NumPy庫比較奇怪的一點。事實上,在很多其他資料分析工具中,*在用於兩個矩陣之間的運算時指的是矩陣積。而NumPy用dot( )函式表示這類乘法,注意,它不是元素級的。

NumPy庫中的基本操作

所得到的陣列中每個元素為第一個矩陣中與該元素行號相同的元素與第二個矩陣中與該元素列號相同的元素,兩兩相乘後再求和。其實就是我們線上性代數中學習的矩陣的乘法。

矩陣積的另外一種寫法是把dot( )函式當作其中一個矩陣物件的方法。

NumPy庫中的基本操作

由於矩陣積計算不遵循交換律,因此在這裡要多說一句,運算物件的順序很重要,A*B確實不等於B*A。

NumPy庫中的基本操作

我們可以看到,這兩次運算的結果是完全不一樣的。

自增和自減運算子

python沒有++或——運算子。對變數的值進行自增與自減,需要使用+=或-=運算子。這兩個運算子跟前面見過的只有一點不同,運算得到的結果不是賦給一個新陣列而是賦給參與運算的陣列自身。

NumPy庫中的基本操作

因此,這類運算子比每次只能加1的自增運算子用途更廣。例如,當你想修改陣列元素的值而不想生成新陣列時,就可以使用它們。

NumPy庫中的基本操作

通用函式

通用函式通常叫做ufunc,它對陣列中的每個元素逐一進行操作。這表明,通用函式分別處理輸入陣列的每個元素,生成的結果組成一個新的輸出陣列。輸出陣列的大小跟輸入陣列相同。

三角函式等很多數學運算符合通用函式的定義,例如,計算平方根的sqrt( )函式、用來取對數的log( )函式和求正弦值的sin( )函式。

NumPy庫中的基本操作

NumPy實現了很多通用函式。

聚合函式

聚合函式是指對一組值(比如一個數組)進行操作,返回一個單一值作為結果的函式。因而,求陣列所有元素之和的函式就是聚合函式。ndarray類實現了多個這樣的函式。

NumPy庫中的基本操作

索引機制、切片和迭代方法

前面,我們講解了陣列建立和陣列運算,現在我們將介紹陣列物件的操作方法,以及如何透過索引和切片方法選擇元素,以獲取陣列中某幾個元素的檢視或者用賦值操作改變元素。

索引機制

陣列索引機制指的是用方括號( [ ] )加序號的形式飲用單個數組元素,它的用處很多,比如抽取元素,選取陣列的幾個元素,甚至為其賦一個新值。新建陣列的同時,會生成跟陣列大小一致的索引。

要獲取陣列的單個元素,指定元素的索引即可。

NumPy庫中的基本操作

NumPy陣列還可以使用負數作為索引,這些索引同樣為遞增序列,只不過從0開始,依次增加-1,但實際表示的是從陣列的最後一個元素像陣列第一個元素移動。在負數索引機制中,陣列第一個元素的索引最小。

NumPy庫中的基本操作

方括號內傳入多個索引值,可以同時選擇多個元素。

NumPy庫中的基本操作

再來看下二維陣列,它也被稱為矩陣。矩陣是由行和列組成的舉行陣列,行和列用兩條軸來定義,其中軸0用行表示,軸1用列表示。因此,二維陣列的索引用一對值來表示;第一個值為行索引,第二個值為列索引。所以,如要獲取或選取矩陣中的元素,仍使用方括號,但索引值為兩個[行索引,列索引]。

NumPy庫中的基本操作

因此,如果想獲取第二行第三列元素,需要使用索引值[1,2]。

NumPy庫中的基本操作

Top