国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 編程 > Python > 正文

Python科學(xué)計算庫NumPy學(xué)習(xí)筆記(2)--Array數(shù)組和矩陣基本運(yùn)算

2019-11-08 03:19:59
字體:
供稿:網(wǎng)友

1.函數(shù)庫的導(dǎo)入

import numpy #或者import numpy as np

2.基本運(yùn)算

2.1.求和 .sum() 2.2.求最大值 .max() 2.3.求最小值 .min() 2.4.求平均值 .mean()

import numpy as nptest1 = np.array([[5, 10, 15], [20, 25, 30], [35, 40, 45]])test1.sum()# 輸出 225test1.max()# 輸出 45test1.min()# 輸出 5test1.mean()# 輸出 25.0

2.5.矩陣行求和 .sum(axis=1)

test1 = np.array([[5, 10, 15], [20, 25, 30], [35, 40, 45]])test1.sum(axis=1)# 輸出 array([30, 75, 120])

2.6.矩陣列求和 .sum(axis=0)

test1 = np.array([[5, 10, 15], [20, 25, 30], [35, 40, 45]])test1.sum(axis=0)# 輸出 array([60, 75, 90])

2.7.矩陣乘法

import numpy as npa = np.array([[1, 2], [3, 4]])b = np.array([[5, 6], [7, 8]])PRint (a*b) # 對應(yīng)位置元素相乘print (a.dot(b)) # 矩陣乘法print (np.dot(a, b)) # 矩陣乘法,同上# 輸出 [[5 12] [21 32]] [[19 22] [43 50]] [[19 22] [43 50]]

2.8.元素求平方: a**2

a = np.range(4)print (a)print (a**2)# 輸出 [0, 1, 2, 3] [0, 1, 4, 9]

2.9.元素求e的n次冪: np.exp(test) 元素開根號: np.sqrt(test)

import numpy as nptest = np.arange(3)print (test)print (np.exp(test)) #e的n次冪print (np.sqrt(test)) #開根號# 輸出 [0 1 2] [1. 2.71828183 7.3890561] [0 1. 1.41421356]

2.10.向下取整: .floor()

import numpy as nptest = np.floor(10*np.random.random((3, 4)))print (test)# 輸出 [[ 3. 8. 7. 0.] [ 5. 9. 8. 2.] [ 3. 0. 9. 0.]]

2.11.平坦化數(shù)組: .ravel()

# 二維n行n列轉(zhuǎn)換為一維數(shù)組test.ravel()# 輸出 array([ 3., 8., 7., 0., 5., 9., 8., 2., 3., 0., 9., 0.]) # 數(shù)據(jù)接上面,下同

2.12.矩陣轉(zhuǎn)置: .T

test.shape = (6, 2)print (test)# 輸出 [[ 3. 8.] [ 7. 0.] [ 5. 9.] [ 8. 2.] [ 3. 0.] [ 9. 0.]]test.T # test的轉(zhuǎn)置# 輸出 array([[ 3., 7., 5., 8., 3., 9.], [ 8., 0., 9., 2., 0., 0.]])

2.13.矩陣拼接按行: np.vstack((a, b)) 矩陣拼接按列: np.hstack((a, b))

import numpy as npa = np.floor(10*np.random.random((2, 2)))b = np.floor(10*np.random.random((2, 2)))print (a)print ('---')print (b)print ('---')print (np.vstack((a, b))) # 按行拼接,也就是豎方向拼接print ('---')print (np.hstack((a, b))) # 按列拼接,也就是橫方向拼接# 輸出 [[ 5. 3.] [ 8. 0.]]---[[ 3. 0.] [ 6. 3.]]---[[ 5. 3.] [ 8. 0.] [ 3. 0.] [ 6. 3.]]---[[ 5. 3. 3. 0.] [ 8. 0. 6. 3.]]

2.14.矩陣分割按列: np.hsplit(a, 3) 和 np.hsplit(a, (3, 4))

import numpy as npa = np.floor(10*np.random.random((2, 12)))print (a)# 輸出 [[ 6. 7. 5. 7. 9. 1. 2. 3. 1. 9. 5. 7.] [ 6. 5. 2. 0. 1. 7. 8. 2. 7. 0. 5. 9.]]print (np.hsplit(a, 3)) # 按列分割,也就是橫方向分割,參數(shù)a為要分割的矩陣,參數(shù)3為分成三份print ('---')print (np.hsplit(a, (3, 4))) # 參數(shù)(3, 4)為在維度3前面也就是第4列前切一下,在維度4也就是第5列前面切一下# 輸出 [array([[ 6., 7., 5., 7.], [ 6., 5., 2., 0.]]), array([[ 9., 1., 2., 3.], [ 1., 7., 8., 2.]]), array([[ 1., 9., 5., 7.], [ 7., 0., 5., 9.]])]---[array([[ 6., 7., 5.], [ 6., 5., 2.]]), array([[ 7.], [ 0.]]), array([[ 9., 1., 2., 3., 1., 9., 5., 7.], [ 1., 7., 8., 2., 7., 0., 5., 9.]])]

2.15.矩陣分割按行: np.vsplit(a, 3) 和 np.vsplit(a, (3, 4))

import numpy as npa = np.floor(10*np.random.random((12, 2)))print (a)# 輸出 [[ 5. 4.] [ 8. 7.] [ 3. 1.] [ 6. 0.] [ 4. 4.] [ 4. 5.] [ 2. 4.] [ 7. 3.] [ 1. 6.] [ 6. 9.] [ 2. 1.] [ 3. 0.]]print (np.vsplit(a, 3)) # 按行分割,也就是橫豎方向分割,參數(shù)a為要分割的矩陣,參數(shù)3為分成三份print ('---')print (np.vsplit(a, (3, 4))) # 參數(shù)(3, 4)為在維度3前面也就是第4行前切一下,在維度4也就是第5行前面切一下# 輸出 [array([[ 5., 4.], [ 8., 7.], [ 3., 1.], [ 6., 0.]]), array([[ 4., 4.], [ 4., 5.], [ 2., 4.], [ 7., 3.]]), array([[ 1., 6.], [ 6., 9.], [ 2., 1.], [ 3., 0.]])]---[array([[ 5., 4.], [ 8., 7.], [ 3., 1.]]), array([[ 6., 0.]]), array([[ 4., 4.], [ 4., 5.], [ 2., 4.], [ 7., 3.], [ 1., 6.], [ 6., 9.], [ 2., 1.], [ 3., 0.]])]

3.創(chuàng)建數(shù)組: .array 首先需要創(chuàng)建數(shù)組才能對其進(jìn)行其它操作,通過給array函數(shù)傳遞Python的序列對象創(chuàng)建數(shù)組,如果傳遞的是多層嵌套的序列,將創(chuàng)建多維數(shù)組(如c):

import numpy as npa = np.array([1, 2, 3, 4])b = np.array((5, 6, 7, 8))c = np.array([[1, 2, 3, 4], [4, 5, 6, 7], [7, 8, 9, 10]])print (a)print ('---')print (b)print ('---')print (c)# 輸出 [1 2 3 4]---[5 6 7 8]---[[ 1 2 3 4] [ 4 5 6 7] [ 7 8 9 10]]若導(dǎo)入numpy用的是import numpy命令,那么在創(chuàng)建數(shù)組的時候用a = numpy.array([1, 2, 3, 4])的形式若導(dǎo)入numpy用的是import numpy as np命令,那么用 a = np.array([1, 2, 3, 4])

4.查詢數(shù)據(jù)類型: .dtype

# 接上面數(shù)據(jù)print (c.dtype)# 輸出 int32

關(guān)于數(shù)據(jù)類型:List中的元素可以是不同的數(shù)據(jù)類型,而Array和Series中則只允許存儲相同的數(shù)據(jù)類型,這樣可以更有效的使用內(nèi)存,提高運(yùn)算效率。

4.1.創(chuàng)建時指定元素類型

import numpy as npa = np.array([[1, 2, 3, 4], [4, 5, 6, 7], [7, 8, 9, 10]])b = np.array([[1, 2, 3, 4], [4, 5, 6, 7], [7, 8, 9, 10]], dtype='str')print (a)print ('---')print (b)# 輸出 [[ 1 2 3 4] [ 4 5 6 7] [ 7 8 9 10]]---[['1' '2' '3' '4'] ['4' '5' '6' '7'] ['7' '8' '9' '10']]

4.2.轉(zhuǎn)換數(shù)據(jù)類型: .astype

# 接上面數(shù)據(jù)b = b.astype(int)print (b)# 輸出 [[ 1 2 3 4] [ 4 5 6 7] [ 7 8 9 10]]

4.3. array數(shù)組的

bool -- True , Falseint -- int16 , int32 , int64float -- float16 , float32 , float64string -- string , unicode

5.查詢矩陣的大小: .shape

import numpy as npa = np.array([1, 2, 3, 4])b = np.array([[1, 2, 3, 4], [4, 5, 6, 7], [7, 8, 9, 10]])print (a.shape)print ('---')print (b.shape)# 輸出 (4,)---(3, 4)

(4, )shape有一個元素即為一維數(shù)組,數(shù)組中有4個元素 (3, 4)shape有兩個元素即為二維數(shù)組,數(shù)組為3行4列

5.1.通過修改數(shù)組的shape屬性,在保持?jǐn)?shù)組元素個數(shù)不變的情況下,改變數(shù)組每個軸的長度。下面的例子將數(shù)組b的shape改為(4, 3),從(3, 4)改為(4, 3)并不是對數(shù)組進(jìn)行轉(zhuǎn)置,而只是改變每個軸的大小,數(shù)組元素在內(nèi)存中的位置并沒有改變:

b.shape = 4, 3print (b)# 輸出 [[ 1 2 3] [ 4 4 5] [ 6 7 7] [ 8 9 10]]

5.2.當(dāng)某個軸的元素為-1時,將根據(jù)數(shù)組元素的個數(shù)自動計算該軸的長度,下面程序?qū)?shù)組b的shape改為了(2, 6):

b.shape = 2, -1print (b)# 輸出 [[ 1 2 3 4 4 5] [ 6 7 7 8 9 10]]

5.3.使用數(shù)組的reshape方法,可以創(chuàng)建一個改變了尺寸的新數(shù)組,原數(shù)組的shape保持不變:

a = np.array((1, 2, 3, 4))b = a.reshape((2, 2))b# 輸出 array([[1, 2], [3, 4]])

6.復(fù)制(1): = a和b共享數(shù)據(jù)存儲內(nèi)存區(qū)域,因此修改其中任意一個數(shù)組的元素都會同時修改另外一個數(shù)組或矩陣的內(nèi)容:

a[2] = 100 # 將數(shù)組a的第3個元素改為100,數(shù)組d中的2即第三個元素也發(fā)生了改變b# 輸出 array([[1, 2], [100, 4]])import numpy as npa = np.arange(12)b = aprint (a)print (b)print (b is a) # 判斷b是a?# 輸出 [ 0 1 2 3 4 5 6 7 8 9 10 11] [ 0 1 2 3 4 5 6 7 8 9 10 11] Trueb.shape = 3, 4print (a.shape)# 輸出 (3, 4)print (id(a))print (id(b))# 輸出 2239367199840 2239367199840

7.復(fù)制(2)–淺復(fù)制: .view()

# The view method creates a new array object that looks at the same data.import numpy as npa = np.arange(12)b = a.view() # b是新創(chuàng)建出來的數(shù)組,但是b和a共享數(shù)據(jù)b is a # 判斷b是a?# 輸出 Falseprint (b)# 輸出 [ 0 1 2 3 4 5 6 7 8 9 10 11]b.shape = 2, 6 # 改變b的shape,a的shape不會受影響print (a.shape)print (b)# 輸出 (12,)[[ 0 1 2 3 4 5] [ 6 7 8 9 10 11]]b[0, 4] = 1234 # 改變b第1行第5列元素為1234,a對應(yīng)位置元素受到影響print (b)# 輸出 [[ 0 1 2 3 1234 5] [ 6 7 8 9 10 11]]print (a)# 輸出 [ 0 1 2 3 1234 5 6 7 8 9 10 11]

8.復(fù)制(3)–深復(fù)制: .copy()

# The copy method makes a complete copy of the array and its data.import numpy as npa = np.arange(12)a.shape = 3, 4a[1, 0] = 1234c = a.copy()c is ac[0, 0] = 9999 # 改變c元素的值,不會影響a的元素print (c)print (a)# 輸出 [[9999 1 2 3] [1234 5 6 7] [ 8 9 10 11]][[ 0 1 2 3] [1234 5 6 7] [ 8 9 10 11]]

9.查詢維度: .ndim

import numpy as npa = np.array([[5, 10, 15], [20, 25, 30], [35, 40, 45]])a.ndim# 輸出 2

10.查詢元素個數(shù): .size

import numpy as npa = np.array([[5, 10, 15], [20, 25, 30], [35, 40, 45]])a.size# 輸出 9

11.創(chuàng)建0矩陣: .zeros

np.zeros((3, 4)) # 創(chuàng)建3行4列的0矩陣np.zeros((3, 4), dtype=np.str) # 可以在創(chuàng)建的時候指定數(shù)據(jù)類型

12.創(chuàng)建1矩陣: .ones

np.noes((3, 4)) # 創(chuàng)建3行4列的1矩陣

13.區(qū)間內(nèi)按等差創(chuàng)建矩陣: .arange

np.arange(10, 30, 5) # 10開始到30,沒加5生成一個元素# 輸出array([10, 15, 20, 25])# 可以通過修改shape屬性改變維度,參考上文np.arange(0, 2, 0.3) # 0開始到2,沒加0.3生成一個元素# 輸出array([0, 0.3, 0.6, 0.9, 1.2, 1.5, 1.8])np.arange(12).reshape(3, 4) # 從0開始每加1共生成12個元素,并通過reshape設(shè)定矩陣大小為3行4列# 輸出array([[0, 1, 2, 3], [4, 5, 6, 7], [8, 9, 10, 11]])np.random.random((2, 3)) # 生成2行3列矩陣,元素為0-1之間的隨機(jī)值

14.區(qū)間內(nèi)按元素個數(shù)取值: .linspace

from numpy import pinp.linspace(0, 2*pi, 100) # 0到2*pi,取100個值

15.利用==判斷數(shù)組或矩陣中是否存在某個值

這里寫圖片描述

將判斷結(jié)果賦給某個變量

這里寫圖片描述

一次判斷多個條件

這里寫圖片描述 對于矩陣來說情況也是一樣的


發(fā)表評論 共有條評論
用戶名: 密碼:
驗(yàn)證碼: 匿名發(fā)表
主站蜘蛛池模板: 奇台县| 咸丰县| 喜德县| 读书| 云和县| 南皮县| 兴宁市| 阜城县| 龙江县| 吉水县| 珠海市| 贵定县| 迭部县| 喀喇| 阆中市| 元江| 平乡县| 象山县| 柯坪县| 壤塘县| 阿拉善右旗| 沂水县| 洛浦县| 三江| 句容市| 从化市| 祁东县| 陇川县| 正蓝旗| 拉萨市| 北海市| 类乌齐县| 怀来县| 南投县| 萨迦县| 富民县| 新乡县| 姚安县| 城市| 左权县| 东海县|