詳細介紹可以看Numpy幫助,也有很多資料,此文僅是一個簡述性質的集成文章
1.簡介
Numpy是Python的一個擴展包,語法和Matlab有很多相似之處。它支持高維數組和矩陣運算,也提供了許多數組和矩陣運算的函數。另外,它在數組和矩陣運算方面速度很快,效率很高。對數組的運算都可以算在每個元素上。如,A*2(A為3*3的矩陣),結果是A中的9個元素都乘2
1.1 索引與切片
數組索引一般用 [] 來實現,一維arratName[行],二維aName[行,列],三維[頁,行,列],可以用冒號:代替某一維度,表示取該維度所有元素。如a[[1,2],[3,4]],a[:,1]為[2,4]
布爾型索引 布爾型數組的長度必須和被索引的軸長度一致
花式索引 利用整數數組進行索引
print a[[4, 3, 0, 6]] # 打印a[4]、a[3]、a[0]和a[6]。
切片如下: a為3*3*3矩陣 b = a[1, :,:]
1.2 復制與鏡像
用.copy()方法復制數組,= 直接賦值。賦值只能產生鏡像,僅是給變量增加一個名稱;復制可以生成另一個變量,兩個變量相互獨立。
1.3 數組轉置和軸對換
轉置為 arrayName.T
矩陣相乘 np.dot(array1,array2)
高維軸對換 .transpose 或 .swapaxes
1.4 按條件邏輯邏輯運算
如:a=np.arange(9).reshap(3,3) print(a>5), print(a[a>5])。第一個輸出是True和False的矩陣,第二個輸出6,7,8,9
因此,可以按條件選擇數組元素
np.where的使用 語法:np.where(條件,表達式1,表達式2)條件為真執行表達式1,條件為假執行表達式2.
1.5 排序
.sort() 0為按列排序,1為按行排序
2.常用函數介紹
構造函數 |
說明 |
array |
將輸入數據(列表、元組、數組等)轉換為ndarray |
arange |
類似於range,返回一個ndarray |
ones |
根據指定大小和dtype創建一個全1數組 |
zeros |
根據指定大小和dtype創建一個全0數組 |
empty |
創建數組,只分配內存空間不填充任何值 |
eye, identity |
創建單位矩陣 |
運算函數(一元) |
說明 |
abs,fabs |
計算絕對值,計算復數的模。對於非復數,用fabs更快 |
sqrt |
開方 |
sqare |
平方 相當於a**2 |
exp |
計算各元素的e^x |
log, log10, log2, log(1+x) |
自然對數,底數為10,底數為2和log(1+x) |
ceil |
向上取整 |
floor |
向下取整 |
sign |
計算各元素的正負號 |
rint |
四舍五入到整數,保留dtype |
modf |
將整數部分和小數部分以兩個獨立數組返回 |
cos,sin,tan |
三角函數 |
arccos,arcsin,arctan |
反三角 |
運算函數(二元) |
說明 |
add |
將數組中對應的元素相加 |
subtract |
從第一個數組中減去第二個數組中的元素 |
multiply |
元素相乘 |
Divide, floor_divide |
相除,或向下取整除法 |
power |
Power(A,B) 計算A^B |
Max fmax |
計算最大值,fmax忽略NaN |
Min fmin |
計算最小值,fmin忽略NaN |
mod |
求模 |
copysign |
將第二數組中的符號復制給第一個數組元素 |
greater,greater_equal less,less_equal,equal, not_equal |
執行元素級的比較,最終產生布爾型數組
|
Logical_and, logical_or Logical_xor |
執行元素級的真值邏輯運算,產生布爾型數組 |
數學和統計方法 |
說明 |
sum |
對數組中全部或某軸向的元素求和,0為按列,1為按行 |
mean |
求平均 |
std, var |
標准差和方差 |
min, max |
最小值和最大值 |
argmin,argmax |
最大值和最小值的索引 |
cumsum |
所有元素累計和 |
cumprod |
所有元素累計積 |
去重、集合運算函數 |
說明 |
unique(x) |
計算X中的唯一元素,並返回有序結果 |
intersect1d(x,y) |
計算x和y中的公共元素,並返回有序結果 |
union1d(x,y) |
計算x和y的並集,返回有序結果 |
in1d(x,y) |
得到一個描述x的元素是否包含於y的布爾型數組 |
setdiff1d(x,y) |
集合的差,即元素在X中且不在Y中 |
setxor1d(x,y) |
集合的異或,即存在一個數組中,另外一個數組中沒有 |
常用的np.linalg函數 |
說明 |
diag |
以一位數組的形式返回方陣的對角線 |
dot |
矩陣乘法 |
trace |
計算對角線元素的和 |
det |
計算矩陣行列式 |
eig |
計算方陣的特征值和特征向量 |
inv |
計算方陣的逆 |
pinv |
計算矩陣的Moore-Penrose偽逆 |
qr |
計算QR分解 |
svd |
計算奇異值分解 |
solve |
解線性方程Ax=b,A為一個方陣 |
lstsq |
計算Ax=b的最小二乘解 |
隨機數生成 函數 |
說明 |
seed |
確定隨機數生成器的種子 |
permutation |
返回一個序列的隨機排列 |
shuffle |
對一個序列隨機亂序 |
rand |
產生均勻分布的樣本值 |
randint |
從給定的上下限范圍內隨機選取整數 |
randn |
產生正態分布(平均值為0,標准差為1) |
binomial |
產生二項分布的樣本值 |
normal |
產生正態(高斯)分布的樣本值 |
beta |
產生Beta分布的樣本值 |
chisquare |
產生卡方分布的樣本值 |
gamma |
產生Gramma分布的樣本值 |
uniform |
產生在[0,1]中均勻分布的樣本值 |