Python基礎(chǔ)之Numpy的基本用法詳解
一、數(shù)據(jù)生成
1.1 手寫數(shù)組
a = np.array([1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11]) # 一維數(shù)組
b = np.array([[1, 2], [3, 4]]) #二維數(shù)組
1.2 序列數(shù)組
numpy.arange(start, stop, step, dtype),start默認(rèn)0,step默認(rèn)1
c = np.arange(0, 10, 1, dtype=int) # =np.arange(10) [0 1 2 3 4 5 6 7 8 9] d = np.array([np.arange(1, 3), np.arange(4, 6)]) # 二維數(shù)組 # 不過為了避免麻煩,通常序列二維數(shù)組都是通過reshape進(jìn)行重新組織 dd = c.reshape(2, 5) # 將一維數(shù)組重新組合成2行5列
1.3 隨機(jī)數(shù)組
numpy.random.random(size=None) 該方法返回[0.0, 1.0)范圍的隨機(jī)小數(shù)。
numpy.random.randint() 該方法返回[low, high)范圍的隨機(jī)整數(shù)。
該方法有三個(gè)參數(shù)low、high、size 三個(gè)參數(shù)。默認(rèn)high是None,如果只有l(wèi)ow,那范圍就是[0,low)。如果有high,范圍就是[low,high)
numpy.random.randn(d0,d1,…,dn) 該方法返回一個(gè)或一組樣本,具有正態(tài)分布
np.random.normal 指定期望和方差的正太分布
e = np.random.random(size=2) # 一維數(shù)組,元素兩個(gè),[0.0,1.0]的隨機(jī)數(shù) f = np.random.random(size=(2, 3)) # 兩行三列數(shù)組,[0.0,1.0]的隨機(jī)數(shù) h = np.random.randint(10, size=3) # [0,10]范圍內(nèi)的一行三列隨機(jī)整數(shù) i = np.random.randint(5, 10, size=(2, 3)) # [5,10]范圍內(nèi)的2行3列隨機(jī)整數(shù)
1.4 其他方式數(shù)組
numpy.zeros 創(chuàng)建指定大小的數(shù)組,數(shù)組元素以0 來填充
numpy.ones 創(chuàng)建指定形狀的數(shù)組,數(shù)組元素以1 來填充
numpy.empty 創(chuàng)建一個(gè)指定形狀(shape)、數(shù)據(jù)類型(dtype)且未初始化的數(shù)組,里面的元素的值是之前內(nèi)存的值
np.linspace 創(chuàng)建一個(gè)一維數(shù)組,數(shù)組是一個(gè)等差數(shù)列構(gòu)成的
numpy.logspace 創(chuàng)建一個(gè)于等比數(shù)
j = np.zeros((2, 5)) k = np.ones((2, 5)) l = np.linspace(1, 20, 10)
二、數(shù)組屬性查看
ndarray.ndim
darray.shape 數(shù)組的維度和列,對(duì)于矩陣,n 行m 列
ndarray.size 數(shù)組元素的總個(gè)數(shù),相當(dāng)于.shape 中n*m 的值
ndarray.dtype ndarray 對(duì)象的元素類型
ndarray.itemsize ndarray 對(duì)象中每個(gè)元素的大小,以字節(jié)為單位
ndarray.flags ndarray 對(duì)象的內(nèi)存信息
ndarray.real ndarray 元素的實(shí)部
ndarray.imag ndarray 元素的虛部
ndarray.data 包含實(shí)際數(shù)組元素的緩沖區(qū),由于一般通過數(shù)組的索引獲取元素,所以通常不需要使用這個(gè)屬性。
print('ndim:數(shù)組的秩(維度)'.center(20, '*')) print('ndim:', i.shape[1])
三、數(shù)組索引
x = np.arange(1, 13) # 一維數(shù)組
a = x.reshape(4, 3) # 二維數(shù)組
print(‘x:', x)
print(‘a(chǎn):', a)
3.1 一維數(shù)組的索引
print(x[2:]) print(x[3:8])
3.2 二維數(shù)組的索引
print(a[0]) # 第一行 print(a[2, 2]) # 第三行第4列 print(a[:, 2]) print(a[::2, 0]) # 所有奇數(shù)行第1列數(shù)據(jù) print(a[(2, 1), (1, 2)]) # 第3行第2列,第2行第3列 = np.array((a[2,1],a[1,2]))取出來后在重新生成新的數(shù)組 print(a[-2]) # 獲取倒數(shù)第二行 print(a[::-1]) # 行倒序 print(a[::-1, ::-1]) # 行列倒序
四、數(shù)組的方法
4.1 改變數(shù)組維度
reshape將一維數(shù)組變成二維或者三維
ravel將三維數(shù)組變成一維數(shù)組,flatten將二維數(shù)組變成一維數(shù)組
4.2 數(shù)組拼接
使用numpy.hstack(a1,a2) 函數(shù)將兩個(gè)數(shù)組水平組合
numpy.vstack(a1,a2) 函數(shù)可以將兩個(gè)或多個(gè)數(shù)組垂直組合起來形成一個(gè)數(shù)組
使用numpy.concatenate((a1, a2, …), axis),控制axis參數(shù)的值也可以實(shí)現(xiàn)hstack和vstack的功能,axis=0等同于vstack、axis=1等同于hstack
4.3 數(shù)組分隔
b = np.split(x, 4) # 將一個(gè)一維數(shù)組四等分, 用b[1]的方式獲取每個(gè)塊的數(shù)據(jù) # print(b[1]) c = np.split(a, 2, axis=0) # 二維數(shù)組的垂直分隔,按行分隔成兩部分 # print(c[0]) d = np.split(a, [2], axis=1) # 二維數(shù)組的水平分隔,按列分隔成兩部分 # print(d[0])
4.4 算術(shù)運(yùn)算
加減乘除: add(),subtract(),multiply() 和divide()
np.sum() 求和
np.prod() 所有元素相乘
np.mean() 平均值
np.std() 標(biāo)準(zhǔn)差
np.var() 方差
np.median() 中數(shù)
np.power() 冪運(yùn)算
np.sqrt() 開方
np.min() 最小值
np.max() 最大值
np.argmin() 最小值的下標(biāo)
np.argmax() 最大值的下標(biāo)
np.inf 無窮大
np.exp(10) 以e 為底的指數(shù)
np.log(10) 對(duì)數(shù)
到此這篇關(guān)于Python基礎(chǔ)之Numpy的基本用法詳解的文章就介紹到這了,更多相關(guān)Python Numpy用法內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
Pycharm及python安裝詳細(xì)步驟及PyCharm配置整理(推薦)
這篇文章主要介紹了Pycharm及python安裝詳細(xì)步驟以及PyCharm配置整理,本文通過圖文并茂的形式給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2020-04-04Python嵌套列表轉(zhuǎn)一維的方法(壓平嵌套列表)
今天小編就為大家分享一篇Python嵌套列表轉(zhuǎn)一維的方法(壓平嵌套列表),具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來看看吧2018-07-07Python字符串中的單詞反轉(zhuǎn)的實(shí)現(xiàn)示例
在Python中,要將字符串中的單詞進(jìn)行反轉(zhuǎn),本文主要介紹了Python字符串中的單詞反轉(zhuǎn)的實(shí)現(xiàn)示例,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2024-04-04Django使用jinja2模板的實(shí)現(xiàn)
本文主要介紹了Django使用jinja2模板的實(shí)現(xiàn),文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2023-02-02Django migrate報(bào)錯(cuò)的解決方案
在講解如何解決migrate報(bào)錯(cuò)原因前,我們先要了解migrate做了什么事情,本文就詳細(xì)的介紹migrate使用以及出現(xiàn)問題的解決,感興趣的可以了解一下2021-05-05如何利用Python快速繪制海報(bào)級(jí)別地圖詳解
Python之所以這么流行,是因?yàn)樗粌H能夠應(yīng)用于科技領(lǐng)域,還能用來做許多其他學(xué)科的研究工具,最常見的便是繪制地圖,這篇文章主要給大家介紹了關(guān)于如何利用Python快速繪制海報(bào)級(jí)別地圖的相關(guān)資料,需要的朋友可以參考下2021-09-09在Pandas?DataFrame中插入一列的方法實(shí)例
在敲代碼的過程中,老是會(huì)遇到在Dataframe中新添加一列的情況,所以下面這篇文章主要給大家介紹了關(guān)于如何在Pandas?DataFrame中插入一列的方法實(shí)的相關(guān)資料,需要的朋友可以參考下2022-03-03