python numpy库作用_python Numpy库
一.導入庫
import numpy as np
二.創建
1.numpy中只有一種數據類型:ndarray,表示n維數組
創建ndarray數組:
-由列表或者元組類型創建數組
-有元組類型創建數組
-創建特殊數組
2.采用np.array函數來創建,語法為:
np.array(列表或元組)
將參數列表或者元組轉換成ndarray類型.相當于強制類型轉換
a=np.array([1,2,3,5,19]) 由列表創建一維數組
b=np.array([[1,1,1],[2,2,2],[3,3,3]]) 由列表創建二維數組
a=np.array((1,2,3,5,19)) 由元組創建一維數組
b=np.array(((1,1,1),(2,2,2),(3,3,3))) 由元組創建二維數組
b=np.array(([1,1,1],(2,2,2),[3,3,3])) 混搭的。。。
創建數組時,可以用dtype指定數據類型:
a=np.array([1,2,3,5,19],dtype=np.int32)
當不指定dtype的時候,numpy會根據數據自動匹配合適的類型
三.數組類型的屬性
生成一個數組 : b=np.array([[1,1,1],[2,2,2],[3,3,3]])
.ndim:數據是幾維的:b.ndim的值為2
.shape:數據的形狀,即尺寸:b.shape的結果為(3,3)
.size: 數組中元素的數量 b.size的值為9
.dtype: 數組元素的數據類型 b.dtype 的結果為 int32
.itemsize:數組中元素所占的字節數
四.利用函數創建特殊數組
1.全零數組
①np.zeros(shape, dtype = float)
shape為數組的形狀,是列表類型或者元組類型
dtype是數據的類型,可以是整數或者實數,該參數可以省略
例子:a=np.zeros((3,3),dtype=int),則a里面是一個3*3的全零數組
②np.zeros_like(a)
a為一個已知的數組,np.zeros_like(a)生成一個與a形狀相同的全零數組
a=np.array([[1,2],[2,3],[3,5]]) # a是一個三行兩列的矩陣
則np.zeros_like(a) 生成一個三行兩列的全零數組
2.全1數組
①numpy.ones(shape, dtype)
np.ones: 創建指定形狀的數組,數組元素以 1 來填充
例如:np.ones([5,5],dtype=np.int32) #五行五列全是1的數組
②np.ones_like(a)
參數a為一個已知的數組,該函數根據數組a的形狀生成一個全1的數組
3.全是某個值的數組
①np.full(shape,fill_value)
根據指定的shape生成一個全是fill_value的數組
例如:np.full((4,7),8) #四行七列全是8的數組
②np.full_like(a,8) 生成一個與數組a相同,且里面元素都是8的數組
5.np.eye生成單位矩陣
np.eye(n)
生成一個n行n列的單位矩陣
6.np.arange選定數值范圍創建數組
語法 np.arange(start, stop, step, dtype)
start :起始值,默認為0
stop : 終止值(不包含)
step : 步長,默認為1
dtype :類型,可以省
例子:
np.arange(10) #輸出array([0,1,2,3,4,5,6,7,8,9])
np.arange(2,15) #輸出array([2,3,4,5,6,7,8,9,10,11,12,13,14])
np.arange(3,20,5) #輸出array([3,8,13,18])
c=np.arange(9).reshape(3,3)#輸出array([[0, 1, 2],
[3, 4, 5],
[6, 7, 8]])
注意:使用np.arange生成的數組都是一維的,如何變成多維呢?使用數組的reshape方法
例如:np.arange(100).reshape(10,10)
方法的調用!!!! 用變量名.方法名
七.創建線性一維數組
np.linspace(start, stop, num=50, endpoint=True, retstep=False, dtype=None)
start : 序列的起始值
stop : 序列的終止值,如果endpoint為true,該值包含于數列中
num : 要生成的等步長的樣本數量,默認為50
endpoint : 該值為True時,數列中包含stop值,反之不包含,默認是True
retstep : 如果為True時,生成的數組中會顯示間距,反之不顯示
dtype : ndarray的數據類型
例如:a = np.linspace(1,10,10) array([1., 2., 3., 4., 5., 6., 7., 8., 9., 10.])
八.生成隨機數組
1.numpy中有個隨機數子庫,叫做np.random。
里面包含很多隨機數生成算法,使用的時候,采用 np.random.方法名 的形式去使用。
①np.random.rand(d0,d1,...dn) 根據d0,d1,...dn的值生成[0,1)之間均勻分布的隨機數組。
②np.random.randn(d0,d1,...dn) 根據d0,d1,...dn的值生成[0,1)之間標準正太分布的隨機數組。
③np.random.randint(low,high,shape)在[low,high)區間生成shape形狀的隨機數組
例如:np.random.randint(1,10,[5,5])
np.random.randint(1,10) 生成1-10之間的隨機整數(一個整數)
④np.random.seed(s) 隨機數種子函數 : 參數必須是整數類型
⑤np.random.shuffle(a) 把數組a打亂順序
⑥np.random.choice(a,size,replace=False)
解釋:從數組a中,隨機等概率選取數據,構成shape形狀的數組。
當replace的值默認為True,此時,數據可以被重復選取,當不希望重復選取數據的時候,修改replace=False
⑦np.random.uniform(low,high,size):在[low,high)之間等概率的抽取元素,產生形狀為size的數組。
⑧np.random.normal(loc,scale,size):產生均值為loc,方差為scale的尺寸為size的符合正態分布的數組
⑨np.poisson:生成泊松分布的數組
九.數組的變換-改變形狀
1.reshape函數: 改變數組的形狀,不改變數組元素的個數,原數組不變,生成一個和原數組數據一樣的新數組。
有兩種reshape。一種是np的函數,一種是數組的方法.
假設a=np.arange(100), 則a為含有100個元素的一維數組。則改變a為10*10的數組,
方法有:
b=np.reshape(a,(10,10)) # np的函數
b=a.reshape(10,10) # 數組的方法
b=a.reshape((10,10))
執行完上面的代碼后,b為10*10的數組,而a還是含有100個元素的1維數組
2.resize((shape),refcheck=True) #refcheck默認是true,自身調用時須改成false
功能與reshape相同,但是改變原數組
a.resize((1,9)) a變為一維數組了。
①當resize()是用np調用的時候,這時需要第一個參數是矩陣本身,然后記得加括號,是改正后 的矩陣維度, 這時有返回值,可以打印出
例如:>>>a=np.arange(100)
>>> b=np.resize(a,(1,9))
>>> b
輸出:array([[0, 1, 2, 3, 4, 5, 6, 7, 8]])
②當resize()是矩陣自己調用自己時,函數沒有返回值,因此是None,但是也改變了ndarray的值,
這時再打印ndarray就是被resize()改變后的值 ***自身調用時,refcheck=False
例如:>>>a=np.arange(100)
>>>a.resize((1,9),refcheck=False)
>>>a
結果:array([[0, 1, 2, 3, 4, 5, 6, 7, 8]])
十.數組的變換-扁平化
1.flatten()函數,數組扁平化,也就是把多維數組變成一維數組,但是原數組不變。
假設a是一個二維數組,則a.flatten(),得到一個按行展開的一維數組
例如:>>>a=np.random.randint(1,5,[3,3])
>>>a
結果:array([[4, 2, 2],
[4, 1, 1],
[1, 3, 2]])
>>>a.flatten()
結果:array([4, 2, 2, 4, 1, 1, 1, 3, 2])
>>>a
結果:array([[4, 2, 2],
[4, 1, 1],
[1, 3, 2]])
2.a.astype()函數 改變類型的函數
b=a.astype(np.float16),生成一個新數組,新數組中與原數組元素相同,類型不同。
注意:原數組類型不發生變化
例如:>>>a=np.random.randint(1,5,[3,3])
>>>a
結果:array([[4, 2, 4],
[2, 3, 4],
[1, 1, 4]])
>>>a.astype(np.float16)
結果:array([[4., 2., 4.],
[2., 3., 4.],
[1., 1., 4.]], dtype=float16)
>>>a
結果:array([[4, 2, 4],
[2, 3, 4],
[1, 1, 4]])
3.a.tolist()函數 把數組a變成列表
a.T 與a.transpose() 數組的轉置 ,都不改變原數組
例如:>>>a=np.random.randint(1,5,[3,3])
>>>a
結果:array([[4, 4, 4],
[3, 4, 2],
[3, 3, 1]])
>>>a.tolist()
結果:[[4, 4, 4], [3, 4, 2], [3, 3, 1]]
>>>a.T
結果:array([[4, 3, 3],
[4, 4, 3],
[4, 2, 1]])
>>>a.transpose()
結果:array([[4, 3, 3],
[4, 4, 3],
[4, 2, 1]])
>>>a
結果:array([[4, 4, 4],
[3, 4, 2],
[3, 3, 1]])
十一.常用函數及其使用
1.統計函數
使用方法:①np.函數名 ②數組變量.函數名
sum
求和
mean
求平均值
std
求標準差
var
求方差
median
求中位數
max
求最大值
min
求最小值
average()
加權平均數
舉例:
求和:
np.sum(a) 和 a.sum(): 求數組a中所有元素的和。
np.sum(a,axis=0)和 a.sum(axis=0) : 對數組a按行求和
np.sum(a,axis=1)和 a.sum(axis=0) : 對數組a按列求和
求均值
np.mean(a)和a.mean() 求數組a中所有元素的均值
np.mean(a,axis=0)和a.mean(axis=0) 求數組a中所有列的均值
np.mean(a,axis=1)和a.mean(axis=1) 求數組a中所有行的均值
其它統計函數的用法類似
2.數學函數
np.sin()
正弦
np.cos()
余弦
np.tan()
正切
np.arcsin()
反正弦
np.arccos()
反余弦
np.arctan()
反正切
np.degree()
將弧度轉換為角度
np.ptp(a)
計算數組a種最大值與最小值的差
3.舍入函數
np.around()
四舍五入
np.floor()
向下取整
np.ceil()
向上取整
4.排序函數
np.sort(a, axis, kind):對數組a按axis所指定的軸進行排序,排序采用kind參數指定的算法。kind參數可以省略
十二.數組的索引與切片
1.一維數組的索引和切片
索引:a[0],a[-1]
切片:數組名[起始位置:結束位置:步長] a[1:10:2]
2.多維數組的索引和切片
索引:a[0,5,7] 多個維度之間用逗號分隔。
a[0,5,7]表示 第一維數據,選第0個,第2維數據,選第5個,第三維數據,選第7個
切片: ①選擇多行: a[起始行:結束行]
②格式: a[m:n,p:q] 第一維選擇m到n行,不包括n,第2維選擇p到q列,不包括q
3.列表做索引:
①選擇多行,把多行包裝成列表,作為索引,
如:a[[0,3]]表示選擇第0行和第3行。當選擇整行,不考慮列的時候,可以不寫列
②np.ix_函數: 能把兩個一維數組 轉換為 一個用于選取方形區域的索引器。
實際意思就是,直接往np.ix_()里扔進兩個一維數組[1,3],[2,4,5],就能先選1,3行,再選2,4,5列。
④布爾索引--條件索引
大于5的數: a[a>5]
能被5整除的數a[a%5==0]
既能被2整除,又大于5的數:b=a[a%2==0] c=b[b>5]
十三.ndarray類型數據的運算
1.數組與標量(單個數據)之間的運算:相當于數組中的每個元素與標量之間的運算,例如:a=np.arange(10).reshape(2,5) a+5,相當于a中每個元素都加了5,
2.數據規范化
如何規范化:隨機生成一個二維數組,對數組進行規范化,即數組中每個元素減去數組元素的均值除以數組元素的方差:
a=a.mean()/a.std()
3.numpy中一元函數:作用到元素上
對數組運算,實際上是對數組中每個數據進行運算。
np.abs() 求數組中各個元素的絕對值,結果可以是整數或者實數
np.fabs() 求數組中各個元素的絕對值,結果是實數
np.sqrt() 求數組中各個元素的平方根
np.log np.log10 np.log2 計算數組中各個元素的自然對數、以10為底的對數, 以2為底的對數
np.ceil()和np.floor分別表示的是對數組中各個元素進行取整
np.rint()對數組中每個元素進行四舍五入
np.sin() np.cos() np.tan() np.cosh() np.sinh() np.tanh() 對數組中的每個元素進行三角運算。
np.sign() 計算數組中每個元素的符號值,結果為1,0,或-1分別表示正數,0和負數
np.exp() 計算數組中每個元素的指數值
4.numpy中的二元函數和二元運算
兩個同尺寸的數組加減乘除,相當于對應元素的加減乘除
np.maximum(a,b) 求兩個數組a和b對應元素的最大值
np.minimum(a,b) 求兩個數組a和b對應元素的最小值
np.mod(a,b) a中元素除以b中元素的余數
np.copysign(x,y) 將數組y中各元素的符號賦值給x中元素的符號
關系運算符號:> 、>=、< 、<= 、 ==、 !=對應元素進行比較
a[a>b] 在a中找出比數組b大的數
創作挑戰賽新人創作獎勵來咯,堅持創作打卡瓜分現金大獎總結
以上是生活随笔為你收集整理的python numpy库作用_python Numpy库的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 马斯克接管后 推特在App Store的
- 下一篇: python文本解析_如何通过pytho