補充
- tile(val,(x,y))將val內容複製x行,y列。val可以使單個值,也可以是列表
- shape()查看矩陣或者數組的維數;如果是一個值,返回'()';如果存在x行,y列,返回'(x,y)';含有n個值得一維數組,返回'(n,)'。d.shape、shape(d)
- np.argsort()返回的是對一個數組按照從小到大排序的索引數組,例
arr1=np.array([6,5,-7,89,1]) arr2Index=arr1.argsort() print(arr2Index)
輸出爲:[2 4 1 0 3]也就是對arr1數組從小到大排序,最小的是-7,在原數組中的索引爲2,最大的是89,在原數組中
的索引爲3,索引返回的排序後的索引序列第一個是2,最後一個是3
————————————————此處爲分割線————————————————————
l 導入numpy包
import numpy as np
l 創建數組
1. np.array
np.array接受一切序列型的對象(列表、嵌套列表、數組等),併產生一個數組,並且爲這個新建的數組推斷出一個較爲合適的數據類型(顯示說明除外)。每個ndarray對象都必有兩個屬性shape(數組大小)和dtype(數組類型,數組要求數據是同一類型的)
arr=np.array(n維列表) arr=np.array([1,2,3]) arr=np.array([[1,2,3],[4,5,6]]) data=[1,2,3] arr=np.array(data) |
2. 其他方式(調用前都需要加np)
zeros、zeros_like | arr=np.zeros(數組長度值)返回的全是0,長度不一樣而已 arr=np.zeros((3,6))一個 三行六列的 值爲0的數組 zeros_like(arr)返回和arr長度一致的,值均爲0的數組 |
ones、ones_like | arr=np.ones(數組長度值)返回的全是1,長度不一樣而已arr=np.zeros((3,6))一個 三行六列的 值爲1的數組 ones_like(arr)返回和arr長度一致的,值均爲1的數組 |
empty、empty_like | arr=np.empty() arr=np.empty((2,3,6))多數情況下返回的是爲初始化的垃圾值,2*3*6數組 empty_like(arr)返回和arr長度一致的,值均爲0的數組 |
np.arange(n) np.eys(n,m)n*m矩陣,對角線爲1,其餘爲0 np.identity(n) n*n矩陣,對角線爲1,其餘爲0 | np.arange(n)=python內置的range(n),只不過返回的是數組
|
l 數據轉換
1. 顯示轉換
2. Arr2=arr1.astype(待轉換的數據類型);arr2.astype(arr1.dtype);astype無論如何都會創建一個新數組
3. 浮點換成小數,小數後面直接省略
l 運算
1. 大小相等的數組之間的任何運算都會將運算應用到元素級
2. 數值和數組之間的運算,也是作用的數組的元素級
l 數組訪問(索引和切片)
1. 標量值賦給切片時,廣播
2. 切片修改會直接反映到源數組上
3. 切片想要實現複製效果,需要顯示調用copy(),arr[4:6].copy()
arr3=np.array([[[0,1,2],[3,4,5]],[[6,7,8],[9,10,11]]]) 效果相同 |
4. 只有冒號’:’表示整個軸區
arr1=np.array([[1,2,3],[4,5,6],[7,8,9]]) |
5. 通過Bool型索引選取數組中的數據,將總是創建數據副本 ,可用& | 內置的and/or無效
arr1=np.array([[1,2,3],[4,5,6],[7,8,9]]) |
6. 花式索引:利用整數數組進行索引,將數據複製到新數組中
import numpy as np |
l 轉置
1. 一二維數組,可以使用arr.T
2. 轉置返回的是源數據的視圖,不進行任何複製操作
3. 高維數組,transpose需要用到一個由軸編號組成的元組,才能進行轉置。
4. arr.swapaxes()要求給定一對軸編號,根據編號進行軸對換
l 通用函數
對數組執行元素級運算,諸如np.arange()、np.exp()、np.add()、np.maximum()等返回一個數組
也有一些返回多個數組,如np.modf(arr),返回的就是浮點數的整數和小數兩個部分的數組
import numpy as np |
l 數據處理
a1=np.arange(10) np.meshgrid()接收兩個一元數組,返回兩個二維矩陣 |
l Np.where()
Np.where(con,x,y)
當con爲真時,取x的值,否則取y的值;x和y可以數組,也可以是數值
功能類似於 python的三元表達式:x if con else y
l 數學和統計方法
np.mean(arr)/ arr.mean | np.mean(arr)、arr.mean()求數組所有值的均值,arr.mean(axis=1),求每行的均值,arr.mean(axis=0)求每一列的均值,零長度的數組爲NaN |
np.sum(arr)/ arr.sum | arr.sum()求總和,arr.sum(0)豎向求和,arr.sum(1)橫向求和,零長度的數組爲0 |
np.cumsum(arr) / arr.cumsum() | arr.cumsum()所有元素的累積和,arr.cumsum(0),豎向累積求和,arr.cumsum(1),橫向累積求和 |
np.cumprod(arr)/ arr.cumprod() | arr.cumprod()所有元素的累積積,arr.cumprod(0),豎向累積求積,arr.cumprod()(1),橫向累積求積 |
類似的還有 std()標準差、var()方差、max()最大值、min()最小值、argmax()最大值索引、argmin()最小值索引
l 用於布爾型數組的方法
Any() | any()是否存在一個或多個True(非布爾型數組,大於0都是True) |
All() | all()是否所有值都是True(非布爾型數組,大於0都是True) |
l 排序
arr.sort()排序,arr.sort(0)豎向排序,arr.sort(1)橫向排序。直接修改原來的數組
arr1=np.sort(arr),返回的是已排序的副本,不影響源數組,默認按行排序
l 數組的集合運算
arr1=np.array([1,2,5,8,9,6,5,4,1,3,2]) |
l 線性代數
l 隨機數生成