Python Numpy陣列計算

2022-06-23 18:15:13 字數 4805 閱讀 1331

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、陣列和標量之間的運算

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()】

問題:給一個陣列,選出陣列中所有大於5的數。

答案: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 np

a = 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)            元素級加法

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連自己都不相等,那麼怎麼判斷是不是nan呢?

用a==a 只要返回false就能判斷

常用函式:

隨機數生成函式在np.random子包內

常用函式

Python numpy

numpy中array的特性 兩個元素的向量 a np array 1 2 1x2矩陣 a1 np array 1 2 2x1矩陣 a2 np array 1 2 三個元素的向量 b np array 1 2 3 1x3矩陣 b1 np array 1 2 3 3x1矩陣 b2 np array 1...

python pandas numpy

json庫 可以理解為一棟橋樑,通往各個語言,將python內的資料進行轉換,在解析出來 json dumps 將資料全部封裝起來,為一個字串型別 json loads 將資料全部解析出來 ,只要符合json的規範,就可以進行解析 import json doct data json dumps ...

python numpy模組

numpy是高效能科學計算和資料分析的基礎包。它是pandas等其他各種工具的基礎。 numpy的主要功能 ndarray,一個多維陣列結構,高效且節省空間 無需迴圈對整組資料進行快速運算的數學函式 讀寫磁碟資料的工具以及用於操作記憶體對映檔案的工具 線性代數 隨機數生成和傅立葉變換功能 用於整合c ...