numpy.array的基本運算以及對數據的操作
設置一個問題,例如
這種只需要基本的運算就可以實現
類似的
numpy對向量的運算進行了優化,速度是相當快的,這種被稱為universal functions
可以使用+,-,,/,//, *(兩個星號),%,1/(/表示浮點除,//表示整數除,%表示取余,**表示平方,1/表示倒數)
特殊的運算
像是abs(絕對值),三角函數(sin,cos,tan等),exp(所有元素取e的x次方),log,log2,log10
矩陣之間的運算,要保證可以運算
常規加減沒問題,在矩陣相乘的時候不能使用*,要使用.dot(),轉置矩陣可使用.T
向量與矩陣的運算
正常的加減法,雖然數學意義上不存在,但是是可以計算出來的,通過堆疊可以驗證出來計算的結果
不同行列數的矩陣相乘,也是使用dot來操作,不同的是,numpy會自動將結構修改,使之變成符合運算規律的計算
(A.dot(V),將v變成了一個2*1的矩陣列向量)
矩陣的逆
使用linalg.inv
由於很多時候只有方陣才能進行計算,那么我們就需要使用linalg.pinv來設置偽逆矩陣
聚合操作
聚合操作
即將一組值變成一個值
像是求和
使用sum或者np.sum即可
兩者的區別就是,原生的sum效率是比np.sum的效率低的
對二維數組也可以
當設置成axis=0時,會沿着行的方向進行運算(垂直方向)
同理,axis=1時,沿着列方向(水平方向)
求一個組的最小值或最大值
乘積(計算出來不對,感覺哪里出了問題),均值,中位數
百分數
q=50意味着百分之50的數(即中位數)
通過for循環輸出各個百分位點
方差和標准差
索引(arg運算)
索引
當想要獲取獲取的數的位置時,可以使用arg后接運算
這將返回一個索引值,這個值的位置即為數值位置
argmin
argmax
排序以及使用索引
首先將創建出的亂序
(如果只是對np.sort操作,這只是將順序顯示出來,並沒有改變原有的順序)
對x進行sort操作的話,會直接改變
對二維數組來說,相同
注意:默認的axis為1
使用argsort一樣,返回的是索引
使用索引排序
使用argsort顯示出來的是原有數據的索引值的排序順序
(像是索引為6的值是0,1的索引值為13,以此類推)
快速排序的partition操作(對象,標定點)
如果使用的是argpartition,則返回的是索引值,對二維數組同樣適用
比較(包含fancy indexing)
Fancy indexing
想要得到指定的索引值的數據(在需要非等步長的時候)
可以使用ind
我們還可以使用這種方法對二維的索引進行一個使用
通過二維的索引,對原有數據引用,是指形成根據索引排布的一個二維矩陣
對二維數組來說
同樣可以使用
我們想要得到對應的行列元素,可進行相應的操作
以上是數值方面的
有時候我們還會遇到其他類型的數據
比如在批量比較之后返回的布爾數組
關於numpy.array的比較
我們可以使用很多的符號,像是<,>,<=,>=,==,!=等等
其返回的就是布爾值
同時,我們也可以結合之前的運算符來構成更為復雜的算式
同樣,對二維數組一樣適用
對整體進行(對數組和矩陣都適用)
count_nonzero,不為零的數量
any,是有一個為true,則返回為true
all,是有全部為true,則返回為true
通過axis=1,對列這一行進行比較
同樣的,我們可以對這些進行組合
在兩個數組數據進行比較時,使用位運算符&(與),|(或),~(非)
這種方法可以很直觀的顯示出所需要的值
像是需要數組中小於5的,需要數組中為偶數的
對二維數組來說一樣可以
如果我們需要抽出一些行,這些行滿足的特點是最后一列可以被三整除,那么我們要先選擇出第三列,然后進行整除,最后抽出來