Python—实训day7上—Nmupy数值计算基础
Numpy是用于數(shù)據(jù)科學(xué)計(jì)算的基礎(chǔ)模塊,不但能夠完成科學(xué)計(jì)算的任務(wù),而且能夠被用作高效的多維數(shù)據(jù)容器,可用作存儲(chǔ)和處理大型矩陣,它的運(yùn)算速度會(huì)比Python自帶的列表運(yùn)算速度要快。Numpy的數(shù)據(jù)容器可用來存儲(chǔ)多種類型數(shù)據(jù),這使得Numpy可以快速并且無縫整合各種類型數(shù)據(jù)。Numpy本身并沒有提供很多高級(jí)的數(shù)據(jù)分析功能,理解Numpy數(shù)組及數(shù)組計(jì)算有助于更加高效地使用諸如pandas等數(shù)據(jù)處理工具。
1掌握Numpy數(shù)組對(duì)象ndarray
ndarray(數(shù)組)是存儲(chǔ)單一數(shù)據(jù)類型的多維數(shù)組。
1.1創(chuàng)建數(shù)組
1.1.1numpy.array()創(chuàng)建數(shù)組
numpy.array(object, dtype=None, copy=True, order='K',subok=False, ndmin=0)
import numpy as np#一維數(shù)組 arr1 = np.array([1, 2, 3, 4]) arr1#二維數(shù)組 arr2 = np.array([[1, 2, 3, 4], [5, 6, 7, 8], [9, 10, 11, 12]]) arr2數(shù)組屬性:
arr2.shape #數(shù)組形狀 arr2.ndim #數(shù)組維度 arr2.size #數(shù)組個(gè)數(shù) arr2.dtype #元素類型1.1.2arange、linspace創(chuàng)建數(shù)組(等差數(shù)組)
numpy.arange([start, ]stop, [step, ]dtype=None)
參數(shù)說明:
(1)start:可忽略不寫,默認(rèn)從0開始;起始值;
(2)stop:結(jié)束值;生成的元素不包括結(jié)束值;
(3)step:可忽略不寫,默認(rèn)步長(zhǎng)為1;步長(zhǎng);
(4)dtype:默認(rèn)為None,設(shè)置顯示元素的數(shù)據(jù)類型。
------------------
numpy.linspace(start, stop, num=50, endpoint=True, retstep=False, dtype=None, axis=0)
參數(shù)說明:
1.1.3logspace創(chuàng)建數(shù)組(等比數(shù)列)
numpy.logspace(start, stop, num=50, endpoint=True, base=10.0, dtype=None, axis=0)
參數(shù)說明:
- start:代表間隔的起始值。
- stop:代表以區(qū)間為基礎(chǔ)的間隔的停止值。
- num:默認(rèn)是50個(gè)樣本點(diǎn)(數(shù)據(jù)),為正整數(shù)。
- endpoint:默認(rèn)為True,如果改為Fasle取不到右端點(diǎn)。
- base:代表日志空間的底數(shù),默認(rèn)是以10為底。
- dtype:可以設(shè)置數(shù)值類型。
1.1.4特殊數(shù)組
(1)numpy.zeros(shape, dtype=float, order='C'):返回來一個(gè)給定形狀和類型的用0填充的數(shù)組。
參數(shù)說明:
(2)numpy.eye(N, M=None, k=0, dtype=, order=‘C’):返回一個(gè)二維數(shù)組,其對(duì)角線元素為1,其余位置元素為0。
參數(shù)說明:
(3)numpy.diag(v,k=0):以一維數(shù)組的形式返回方陣的對(duì)角線(或非對(duì)角線)元素,或?qū)⒁痪S數(shù)組轉(zhuǎn)換成方陣(非對(duì)角線元素為0).兩種功能角色轉(zhuǎn)變?nèi)Q于輸入的v。
參數(shù)說明:
(4)numpy.ones(shape, dtype=None, order='C')
1.2數(shù)組數(shù)據(jù)類型
#----整型轉(zhuǎn)變?yōu)楦↑c(diǎn)型 arr1 = np.array([1, 2, 3], dtype='int') arr1.dtype arr1 = np.float64(arr1) arr1.dtype#----浮點(diǎn)型轉(zhuǎn)變?yōu)檎?arr1 = np.array([1, 2, 3], dtype='float32') arr1.dtype arr1 = np.int64(arr1) arr1.dtype1.3生成隨機(jī)數(shù)
#無約束條件下生成隨機(jī)數(shù) np.random.random(size=(4,3)) #生成服從正態(tài)分布的隨機(jī)數(shù) np.random.randn(3, 4) #生成給定上下范圍的隨機(jī)數(shù) np.random.randint(1, 5, size=(2,3)) #最小值不低于1,最大值不高于5,生成2行3列數(shù)組1.4通過索引訪問數(shù)組
1.4.1一維數(shù)組索引
arr1 = np.arange(10) arr1[-1] arr1[2:4] arr1[2:8:2] arr1[2:4] = 3,51.4.2多維數(shù)組的索引
arr2 = np.array([[1, 2, 3, 4], [5, 6, 7, 8], [9, 10, 11, 12]]) arr2[1,1:3] arr2[1,(1,2)] arr2[2, :] arr2[0::2, :]1.5變換數(shù)組的形狀
1.5.1轉(zhuǎn)換為數(shù)組形狀
arr1 = np.arange(12) #一維數(shù)組 arr1.ndim #一維的#第一種:使用shape屬性 arr1.shape = 3,4 arr1 arr1.shape #(3, 4)#第二種:reshape方法 arr1 = arr1.reshape(2, 6) #需要賦值給原始數(shù)據(jù)才能生效 arr1 arr1.shape #(2, 6)1.5.2展平數(shù)組
arr1.ravel() #橫向展平 arr1.flatten() #橫向展平 arr1.flatten('F') #縱向展平1.5.3組合數(shù)組
arr1 = np.array([[1, 2, 3, 4], [5, 6, 7, 8], [9, 10, 11, 12]]) arr2 = np.array([[1, 2, 3, 4], [5, 6, 7, 8], [9, 10, 11, 12]]) np.hstack((arr1, arr2)) #橫向組合 np.vstack((arr1, arr2)) #縱向組合 np.concatenate((arr1, arr2), axis=1) #橫向組合 np.concatenate((arr1, arr2), axis=0) #縱向組合1.5.4切割數(shù)據(jù)
np.hsplit(arr1, 2) #橫向分割 np.vsplit(arr1, 3) #縱向分割 np.split(arr1, 2, axis=1) #橫向分割 np.split(arr1, 3, axis=0) #縱向分割2掌握Numpy矩陣與通用函數(shù)
2.1創(chuàng)建矩陣
matr1 = np.mat("1 2 3;4 5 6;7 8 9") matr2 = np.matrix([[1, 2, 3],[4, 5, 6],[2, 2, 3]])arr1 = np.array([[1, 2, 3],[4, 5, 6]]) arr2 = np.array([[1, 3, 4],[7, 5, 9]]) np.bmat("arr1 arr2;arr2 arr1")2.2矩陣的運(yùn)算
2.2.1加減乘除
matr1 + matr2 matr1 - matr2 matr1 * matr2 #矩陣意義上的相乘 np.multiply(matr1, matr2) #對(duì)應(yīng)位置元素的相乘 matr1 * 22.2.2特有屬性
matr1.T #自身的轉(zhuǎn)置mat = np.matrix([[1, 1],[-1, 1]]) mat.I #自身的逆矩陣3練習(xí)
創(chuàng)建一個(gè)8?8的全零數(shù)組,并把1,3,5,7行和2,4,6列的元素設(shè)置為1。之后將數(shù)組的形狀轉(zhuǎn)變?yōu)??16。
a = np.zeros((8, 8)) a[1::2 , 2::2] = 1 #a.shape = 4,16 a = a.reshape(4, 16) #賦值回原始數(shù)據(jù)才會(huì)生效?
總結(jié)
以上是生活随笔為你收集整理的Python—实训day7上—Nmupy数值计算基础的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 钱与命的八句真实话(图)
- 下一篇: Python—实训day7下—Panda