1、numpy是高效能科學計算和資料分析的基礎包。它是pandas等其他各種工具的基礎。
2、numpy的主要功能:
3、安裝方法:pip install numpy
1、建立ndarray:np.array()
2、ndarray是多維陣列結構,與列表的區別是:
3、常用屬性:
4、常用方法
array.shape array的規格array.ndim
array.dtype array的資料規格
numpy.zeros(dim1,dim2) 建立dim1*dim2的零矩陣
numpy.arange
numpy.eye(n) /numpy.identity(n) 建立n*n單位矩陣
numpy.array([…data…], dtype=float64 )
array.astype(numpy.float64) 更換矩陣的資料形式
array.astype(float) 更換矩陣的資料形式
array * array 矩陣點乘
array[a:b] 切片
array.copy() 得到ndarray的副本,而不是檢視
array [a] [b]=array [ a, b ] 兩者等價
name=np.array(['bob','joe','will']) res=name==』bob』 res= array([ true, false, false], dtype=bool)
data[true,false,…..] 索引,只索取為true的部分,去掉false部分
通過布林型索引選取陣列中的資料,將總是建立資料的副本。
data[ [4,3,0,6] ] 索引,將第4,3,0,6行摘取出來,組成新陣列
data[-1]=data[data.__len__()-1]
numpy.reshape(a,b) 將a*b的一維陣列排列為a*b的形式
array([a,b,c,d],[d,e,f,g]) 返回一維陣列,分別為[a,d],[b,e],[c,f],[d,g]
array[ [a,b,c,d] ][:,[e,f,g,h] ]=array[ numpy.ix_( [a,b,c,d],[e,f,g,h] ) ]
array.t array的轉置
numpy.random.randn(a,b) 生成a*b的隨機數組
numpy.dot(matrix_1,matrix_2) 矩陣乘法
array.transpose( (1,0,2,etc.) ) 對於高維陣列,轉置需要乙個由軸編號組成的元組
建立ndarray:array() 將列表轉換為陣列,可選擇顯式指定dtype
arange() range的numpy版,支援浮點數
linspace() 類似arange(),第三個引數為陣列長度
zeros() 根據指定形狀和dtype建立全0陣列
ones() 根據指定形狀和dtype建立全1陣列
empty() 根據指定形狀和dtype建立空陣列(隨機值)
eye() 根據指定邊長和dtype建立單位矩陣
1、陣列和標量之間的運算問題:給乙個陣列,選出陣列中所有大於5的數。a+1 a*3 1//a a**0.5
2、同樣大小陣列之間的運算
a+b a/b a**b
3、陣列的索引:
一維陣列:a[5]
多維陣列:
列表式寫法:a[2][3]
陣列的切片:
一維陣列:a[5:8] a[4:] a[2:10] = 1
多維陣列:a[1:2, 3:4] a[:,3:5] a[:,1]
4、強調:與列表不同,陣列切片時並不會自動複製,在切片陣列上的修改會影響原陣列。 【解決方法:copy()】
答案:a[a>5]
原理:a>5會對a中的每乙個元素進行判斷,返回乙個布林陣列
布林型索引:將同樣大小的布林陣列傳進索引,會返回乙個由所有true對應位置的元素的陣列
問題2:給乙個陣列,選出陣列中所有大於5的偶數。
問題3:給乙個陣列,選出陣列中所有大於5的數和偶數。
答案:a[(a>5) & (a%2==0)]
a[(a>5) | (a%2==0)]
import numpy as npa = np.array([1,2,3,4,5,4,7,8,9,10])
a[a>5&(a%2==0)] #注意加括號,不叫括號錯誤,如下
輸出:array([ 1, 2, 3, 4, 5, 4, 7, 8, 9, 10])
a[(a>5)&(a%2==0)]
輸出:array([ 8, 10])
問題1:對於乙個陣列,選出其第1,3,4,6,7個元素,組成新的二維陣列。通用函式:能同時對陣列中所有元素進行運算的函式答案:a[[1,3,4,6,7]]
問題2:對乙個二維陣列,選出其第一列和第三列,組成新的二維陣列。
答案:a[:,[1,3]]
常見通用函式:
numpy.sqrt(array) 平方根函式numpy.exp(array) e^array[i]的陣列
numpy.abs/fabs(array) 計算絕對值
numpy.square(array) 計算各元素的平方 等於array**2
numpy.log/log10/log2(array) 計算各元素的各種對數
numpy.sign(array) 計算各元素正負號
numpy.isnan(array) 計算各元素是否為nan
numpy.isinf(array) 計算各元素是否為nan
numpy.cos/cosh/sin/sinh/tan/tanh(array) 三角函式
numpy.modf(array) 將array中值得整數和小數分離,作兩個陣列返回
numpy.ceil(array) 向上取整,也就是取比這個數大的整數
numpy.floor(array) 向下取整,也就是取比這個數小的整數
numpy.rint(array) 四捨五入
numpy.trunc(array) 向0取整
numpy.cos(array) 正弦值
numpy.sin(array) 余弦值
numpy.tan(array) 正切值
numpy.add(array1,array2) 元素級加法在資料分析中,nan常被表示為資料缺失值numpy.subtract(array1,array2) 元素級減法
numpy.multiply(array1,array2) 元素級乘法
numpy.divide(array1,array2) 元素級除法 array1./array2
numpy.power(array1,array2) 元素級指數 array1.^array2
numpy.maximum/minimum(array1,aray2) 元素級最大值
numpy.fmax/fmin(array1,array2) 元素級最大值,忽略nan
numpy.mod(array1,array2) 元素級求模
numpy.copysign(array1,array2) 將第二個陣列中值得符號複製給第乙個陣列中值
numpy.greater/greater_equal/less/less_equal/equal/not_equal (array1,array2)
元素級比較運算,產生布林陣列
numpy.logical_end/logical_or/logic_xor(array1,array2)元素級的真值邏輯運算
據缺失值
既然nan連自己都不相等,那麼怎麼判斷是不是nan呢?
用a==a 只要返回false就能判斷
常用函式:
隨機數生成函式在np.random子包內
常用函式
Python Numpy陣列儲存
numpy提供了幾種資料儲存的方法。以3 4陣列a為例 這種方法只能儲存為二進位制檔案,且不能儲存當前資料的行列資訊,檔案字尾不一定非要是bin,也可以為txt,但不影響儲存格式,都是二進位制。這種儲存方法對資料讀取有要求,需要手動指定讀出來的資料的的dtype,如果指定的格式與儲存時的不一致,則讀...
Python numpy的矩陣計算
import numpy as np def numpywork1 矩陣的求和運算 one np.array 1,0,1,3,4,1 2,1,4,2,3,0 3,5,4,1,3,2 2,6,3,1,3,8 9,1,2,1,5,0 two np.sum one,axis 0 每一列求和,得到的新矩陣 ...
python numpy 陣列的切片
參考 對於一維陣列 來說,python原生的list和numpy的array的切片操作都是相同的。arr name start end step 是複製源的意思 對於二維陣列來說,對陣列操作規範是這樣的 arr name 行操作,列操作 舉個例子 in np.arrange 12 reshape 3...