numpy的基本使用 附python代码详细讲解(numpy函数,创建数组,常用属性,索引切片,数组的复制,修改维度,数组的分割、拼接、转置)
生活随笔
收集整理的這篇文章主要介紹了
numpy的基本使用 附python代码详细讲解(numpy函数,创建数组,常用属性,索引切片,数组的复制,修改维度,数组的分割、拼接、转置)
小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.
目錄
- 使用array創(chuàng)建數(shù)組
- 使用arange創(chuàng)建數(shù)組
- Numpy中的隨機(jī)數(shù)創(chuàng)建
- ndarray對(duì)象的常用屬性
- 其他方式創(chuàng)建數(shù)組
- 索引和切片(一位數(shù)組、二維數(shù)組)
- 數(shù)組的復(fù)制
- 修改數(shù)組的維度
- 數(shù)組的拼接
- 數(shù)組的分割
- 數(shù)組的轉(zhuǎn)置
- numpy的函數(shù)使用
使用array創(chuàng)建數(shù)組
# coding=utf-8import numpy as np""" 利用array創(chuàng)建數(shù)組的簡(jiǎn)單介紹 """print("使用array函數(shù)創(chuàng)建一維數(shù)組") a = np.array([1, 2, 3, 4, 5, 6]) print(a) print(type(a))print("使用array函數(shù)創(chuàng)建二維數(shù)組") b = np.array([[1, 2], [2, 3], [4, 5]]) print(b) print(type(b))print("使用array函數(shù)創(chuàng)建三維數(shù)組") c = np.array([[[1, 2, 3], [4, 5, 6], [7, 8, 9]]]) print(c) print(type(c))""" array函數(shù)的常用方法 """print(" array函數(shù)的dtype的使用:設(shè)置創(chuàng)建數(shù)組里面元素的類型") d = np.array([1, 2, 3], dtype=float) print(d) print(type(d))print("array函數(shù)的ndim的使用:設(shè)置數(shù)組的維度") e = np.array([1, 2, 3], dtype=float, ndmin=3) print(e)使用arange創(chuàng)建數(shù)組
# coding = utf-8import numpy as np# range的使用 range(start,end,step) 默認(rèn)為[start,end) step默認(rèn)為1 start默認(rèn)從0開始 print("從1開始,到5結(jié)束(不包含5),默認(rèn)步長(zhǎng)為1") list1 = list(range(1, 5)) print(list1)print("默認(rèn)從0開始,到5結(jié)束(不包含5),步長(zhǎng)默認(rèn)為1") list2 = list(range(5)) print(list2)print("從2開始,到10結(jié)束(不包含10),步長(zhǎng)為2") list3 = list(range(2, 10, 2)) print(list3)# 與range類似,用arange創(chuàng)建數(shù)組 print("從1開始,3結(jié)尾") a = np.arange(1, 3) print(a)print("從1開始,3結(jié)尾,步長(zhǎng)為0.1") b = np.arange(1, 3, 0.1) print(b)print(" dtype的使用") c = np.arange(6, 9, dtype=float) print(c)Numpy中的隨機(jī)數(shù)創(chuàng)建
# coding=utf-8import numpy as np# 隨機(jī)小數(shù) def randomTest():print("使用random創(chuàng)建一維數(shù)組,size規(guī)定了一維數(shù)組的元素個(gè)數(shù) 范圍[0.0,1.0)")a = np.random.random(size=6)print(a)print("創(chuàng)建一個(gè)二維數(shù)組 三行5列")b = np.random.random(size=(3, 5))print(b)print("創(chuàng)建三維數(shù)組 兩個(gè)三行四列")c = np.random.random(size=(2, 3, 4))print(c)randomTest()# 隨機(jī)整數(shù) def randintTest():# 語(yǔ)法:randint(low, high=None, size=None, dtype=None) 這邊也是左閉右開print("生成0-10之間的隨機(jī)整數(shù),一維")a = np.random.randint(11, size=20)print(a)print("生成1到5之間的隨機(jī)整數(shù),二維 (三行四列)")b = np.random.randint(1, 6, size=(3, 4))print(b)print("生成1到10之間的隨機(jī)整數(shù),三維 (兩個(gè)三行四列)")c = np.random.randint(1, 6, size=(2, 3, 4))print(c)# dtype的使用d = np.random.randint(5, size=2, dtype=np.int64)print('設(shè)定的dtype為', d.dtype)randintTest()# 生成正態(tài)分布數(shù)組 def randnTest():# randn函數(shù)返回一個(gè)或一組樣本,具有標(biāo)準(zhǔn)正態(tài)分布(期望為0,方差為1)# randn(d0, d1, ..., dn) dn表示維度,返回值為指定維度的arrayprint("eg:創(chuàng)建一個(gè)一維的有三個(gè)元素的數(shù)組")a = np.random.randn(3)print(a)print("創(chuàng)建一個(gè)二維的(三行四列)")b = np.random.randn(3, 4)print(b)print("創(chuàng)建一個(gè)三維的(兩個(gè)三行四列)")c = np.random.randn(2, 3, 4)print(c)randnTest()# 創(chuàng)建指定期望和方差的正態(tài)分布 def normalTest():print(" normal(loc=0.0, scale=1.0, size=None),默認(rèn)的期望是loc=0.0 方差scale=1.0")a = np.random.normal(size=3)print(a)print("指定期望和方差")b = np.random.normal(loc=2, scale=2, size=(3, 4))print(b)normalTest()https://blog.csdn.net/hanhanwanghaha寶藏女孩 歡迎您的關(guān)注!
歡迎關(guān)注微信公眾號(hào):寶藏女孩的成長(zhǎng)日記
讓這個(gè)可愛的寶藏女孩在努力的道路上與你一起同行!
如有轉(zhuǎn)載,請(qǐng)注明出處(如不注明,盜者必究)
ndarray對(duì)象的常用屬性
# coding=utf-8 import numpy as np# 創(chuàng)建一維的數(shù)組 a = np.arange(2, 5) print(a)a1 = np.array([1, 2, 3]) print(a1)# 創(chuàng)建二位的數(shù)組 b = np.random.randint(1, 5, size=(2, 3)) print(b)print("創(chuàng)建三維數(shù)組(正態(tài)分布)") c = np.random.randn(1, 2, 2) print(c)# 常用屬性 print(" ndim屬性") print("ndim:", a.ndim, b.ndim, c.ndim)print("shape屬性") print("shape:", a.shape, b.shape, c.shape)print("dtype屬性:當(dāng)前元素的類型") print("dtype:", a.dtype, b.dtype, c.dtype)print("size屬性:當(dāng)前元素的總個(gè)數(shù)") print("size:", a.size, b.size, c.size)print("itemsize屬性:每個(gè)元素所占的字節(jié)") print("itemsize:", a.itemsize, b.itemsize, c.itemsize)其他方式創(chuàng)建數(shù)組
# coding=utf-8 import numpy as npprint(" numpy.zeros:里面的元素用0來填充") def zerosTest():a = np.zeros(2)print(a)print("指定類型 dtype")b = np.zeros((3), dtype=int)print(b)print(" 創(chuàng)建二維數(shù)組(兩行三列)")c = np.zeros((2, 3))print(c)zerosTest()print(" numpy.ones:里面的元素用1來填充") def onesTest():a = np.ones(5)print(a)print("指定類型 dtype")b = np.ones((3), dtype=int)print(b)print("創(chuàng)建二維數(shù)組(兩行三列),指定類型")c = np.ones((2, 3), dtype=int)print(c)onesTest()print(" empty:根據(jù)給定的維度和數(shù)值類型返回一個(gè)新的數(shù)組,其元素不進(jìn)行初始化。") def emptyTest():a = np.empty(6)print(a)b = np.empty((2, 3))print(b)emptyTest()# linspace(等差) # linspace(start, stop, num=50, endpoint=True, retstep=False, dtype=None, # axis=0) # 在指定的間隔范圍內(nèi)返回均勻間隔的數(shù)字。 # # 在[start, stop]范圍內(nèi)計(jì)算,返回num個(gè)(默認(rèn)為50)均勻間隔的樣本。 # # endpoint可以選擇性地排除間隔的終點(diǎn)。 def linspaceTest():a = np.linspace(1, 5, 5)print(a)b = np.linspace(1, 20, 8, endpoint=False)print(b)linspaceTest()# logspace(等比),與上面linspace類似 def logspaceTest():print("eg:2的0到9次方")a = np.logspace(0, 9, 10, base=2)print(a)logspaceTest()索引和切片(一位數(shù)組、二維數(shù)組)
# coding = utf-8import numpy as np# 一維數(shù)組的索引和切片 def oneArrayTest():# 創(chuàng)建一個(gè)一維數(shù)組a = np.arange(8)print(a)# 索引print("正索引訪問,索引從0開始")print("索引0處的元素:", a[0])print("索引7處的元素: ", a[7])print("負(fù)索引訪問,倒數(shù)第一個(gè)的索引為-1")print("最后1個(gè)元素為:", a[-1])print("倒數(shù)第3個(gè)元素為:", a[-3])# 正向切片索引切片操作 [start:stop:step]print(" 從開始到結(jié)尾")print(a[:])print("從索引2開始到結(jié)尾")print(a[2:])print("從索引2開始到索引5")print(a[2:5])print("從索引1開始到索引7,步長(zhǎng)是2")print(a[1:7:2])# 負(fù)向切片索引切片操作 [start:stop:step]print("反向獲取")print(a[::-1])print(a[-6:-2])# oneArrayTest()# 二維數(shù)組的索引和切片 def twoArrayTest():a = np.arange(1, 7)print(a)print("reshape的使用 eg:對(duì)上面那個(gè)一維數(shù)組進(jìn)行修改形狀,變?yōu)槎腥?#34;)b = a.reshape((2, 3))print(b)# 索引的使用 eg:查看第二行print(b[1])print("eg:查看第一行第二列")print(b[1][2])"""切片的使用[對(duì)行進(jìn)行切片,對(duì)列進(jìn)行切片][start:stop:step,start:stop:step]"""print(" 獲取所有行和所有列")print(b[:, :])print(" 獲取所有行的第二列")print(b[:, 1])print("獲取所有行的部分列,23列")print(b[:, 1:3])print("獲取部分行,所有列 eg:獲取奇數(shù)行 所有列")print(b[::2, :])print("獲取部分行,部分列 eg:獲取第一行 奇數(shù)列")print(b[0:1, ::2])# 坐標(biāo)獲取print("獲取第1行第三列的元素")print(b[0][2])print(b[0, 2])print("同時(shí)獲取不同行不同列 獲取第一行第三列 第二行第三列")print(b[0, 2], b[1][2])print("讓上面的兩個(gè)值以數(shù)組的形式返回")print(np.array([b[0, 2], b[1][2]]))print("使用坐標(biāo)也可得到上面的結(jié)果,坐標(biāo)前面是行 后面是列")print(b[(0, 1), (2, 2)])# 二維數(shù)組中負(fù)索引的使用print("最后一行:", b[-1])print("行進(jìn)行倒序?yàn)?#xff1a;\n", b[::-1])print("行列都進(jìn)行倒序?yàn)?#xff1a;\n", b[::-1, ::-1])twoArrayTest()數(shù)組的復(fù)制
# coding = utf-8 import numpy as np# 創(chuàng)建一個(gè)二維的數(shù)組 a = np.arange(1, 16).reshape((3, 5)) print(a)print("對(duì)a數(shù)組進(jìn)行切片處理,獲取第一二三行,第一二三列") b = a[:3, :3] print(b)print("對(duì)b中的第一行第一列的值進(jìn)行修改:可知b中更改了,但是原數(shù)組a也會(huì)改變") b[0][0] = 666 print(b) print(a)print("如何解決以上問題呢 這時(shí)就會(huì)用到numpy中的copy") c = np.copy(a[:3, :3]) c[0][0] = 888 print(c) print(a)修改數(shù)組的維度
# coding = utf-8 import numpy as np# 通過reshape()進(jìn)行修改維度 # 將一維數(shù)組轉(zhuǎn)換成為二維,三維數(shù)組 # 創(chuàng)建一個(gè)一維數(shù)組 a = np.arange(1, 13) print(a)print("將一維修改為二維(2,6)(3,4)") # b=a.reshape(3,4) b = a.reshape((3, 4)) print(b)print(" 將一維修改為三維(2,2,3)") c = a.reshape(2, 2, 3) print(c)# 通過np.reshape()進(jìn)行修改維度 print(" 將一維數(shù)組轉(zhuǎn)換為二維數(shù)組") d = np.reshape(a, (2, 6)) print(d) print(" 將一維數(shù)組轉(zhuǎn)換為三維數(shù)組") d1 = np.reshape(a, (2, 2, 3)) print(d1)# 多維轉(zhuǎn)一維 print(" 將多維數(shù)組轉(zhuǎn)換為一維數(shù)組 前提:你必須知道你要轉(zhuǎn)換的數(shù)組有多少個(gè)元素") e = d1.reshape(12) print("這是一個(gè)簡(jiǎn)單的方法 可以不用知道需要轉(zhuǎn)換的數(shù)組里面幾個(gè)元素,直接括號(hào)里面寫-1就可以了") e1 = d1.reshape(-1) print(e) print(e1)# ravel,flatten函數(shù)也可將多維函數(shù)轉(zhuǎn)換為一維數(shù)組 e2 = d1.ravel() print(e2) e3 = d1.flatten() print(e3)數(shù)組的拼接
# coding = utf-8 import numpy as np# 創(chuàng)建兩個(gè)數(shù)組 a = np.array([[1, 2, 3], [4, 5, 6]]) b = np.array([[11, 12, 13], [14, 15, 16]]) print(a) print(b)print("使用hstack進(jìn)行水平拼接") # 列表 hs1 = np.hstack([a, b]) print(hs1) # 元組 hs2 = np.hstack((a, b)) print(hs2)print("使用vstack進(jìn)行垂直拼接") # 列表 vs1 = np.vstack([a, b]) print(vs1) # 元組 vs2 = np.vstack((a, b)) print(vs2)# concatenate的使用 print(" axis=0默認(rèn) 垂直方向拼接 相當(dāng)于vatsck") con1 = np.concatenate((a, b), axis=0) con2 = np.concatenate((a, b)) print(con1) print(con2)print("axis=1 水平方向拼接 相當(dāng)于hatsck") con3 = np.concatenate((a, b), axis=1) print(con3)print("三維數(shù)組有三個(gè)軸,axis = 0 ,axis = 1, axis = 2") b = np.arange(1, 25).reshape(1, 3, 8) print(b, b.shape) b1 = np.arange(101, 125).reshape(1, 3, 8) print(b1, b1.shape)# 三維 axis=0 ax_zero = np.concatenate((b, b1), axis=0) print(ax_zero, ax_zero.shape)# 三維 axis=1 ax_one = np.concatenate((b, b1), axis=1) print(ax_one, ax_one.shape)# 三維 axis=2 ax_two = np.concatenate((b, b1), axis=2) print(ax_two, ax_two.shape)數(shù)組的分割
# coding = utf-8 import numpy as np# 創(chuàng)建一個(gè)一維數(shù)組 a = np.arange(1, 13)# split函數(shù):分割 # 對(duì)一維數(shù)組進(jìn)行分割 # 傳遞整數(shù),平均分割 sp_one = np.split(a, 4, axis=0) print(sp_one)# 傳遞數(shù)組,按位置進(jìn)行分割 print("eg:1到3為一組,4到7為一組,8到12為一組") sp_two = np.split(a, [3, 7]) print(sp_two)# 對(duì)二維數(shù)組進(jìn)行分割 b = np.arange(1, 25).reshape(4, 6) print(b) print("axis = 0,垂直方向,平均分割,將b分為兩個(gè)數(shù)組w,y") w, y = np.split(b, 2, axis=0) print(w) print(y)print("axis = 0,垂直方向,按位置分割,將b分為兩個(gè)數(shù)組w(1,2行),y(3行),g(4行)") w, y, g = np.split(b, [2, 3], axis=0) print(w) print(y) print(g)print("axis = 1,水平方向,將b分為兩個(gè)數(shù)組w,y") w, y = np.split(b, 2, axis=1) print(w) print(y)print("axis = 1,水平方向,將b分為兩個(gè)數(shù)組w,y,前4列為一個(gè)部分,后面幾列為一個(gè)部分") w, y = np.split(b, [4], axis=1) print(w) print(y)print("hsplit:按照水平方向分割 eg:分成兩個(gè)部分,前三列一部分,后三列一部分") w, y = np.hsplit(b, 2) print(w) print(y)print("hsplit:按照位置分割 eg:前五列為一組 后一列為一組") w, y = np.hsplit(b, [5]) print(w) print(y)# vsplit:按照垂直方向分割 print("vsplit:按照垂直方向分割 eg:分成兩個(gè)部分,前三行一部分,后三行一部分") w, y = np.vsplit(b, 2) print(w) print(y)print("vsplit:按照位置分割 eg:前三行為一組 后一行為一組") w, y = np.vsplit(b, [3]) print(w) print(y)數(shù)組的轉(zhuǎn)置
# coding = utf-8 import numpy as np# 數(shù)組的轉(zhuǎn)置可以聯(lián)想到我們?cè)诖蠖W(xué)習(xí)的線性代數(shù)當(dāng)中矩陣的轉(zhuǎn)置 # 創(chuàng)建一個(gè)二維數(shù)組 a = np.arange(1, 25).reshape(4, 6) print(a, a.shape)print("transpose函數(shù)進(jìn)行數(shù)組的轉(zhuǎn)置 a[i][j]--->a[j][i]") b = a.transpose() print(b, b.shape)print("還可以直接使用T來實(shí)現(xiàn)轉(zhuǎn)置") print(a.T)print("使用numpy中的transpose實(shí)現(xiàn)轉(zhuǎn)置") c = np.transpose(a) print(c)# 多維數(shù)組進(jìn)行轉(zhuǎn)置 a = a.reshape(2, 3, 4) print(a, a.shape) print("對(duì)于三維a[i][j][k]進(jìn)行轉(zhuǎn)置 默認(rèn)將i和k進(jìn)行交換 eg:將a[2][3][4]進(jìn)行轉(zhuǎn)置就變?yōu)閍[4][3][2]") b = np.transpose(a) print(b, b.shape)numpy的函數(shù)使用
# coding = utf-8 import numpy as npa = np.arange(9).reshape(3, 3) b = np.array([9, 9, 9]) print("加法:a+b") print(np.add(a, b)) print(a + b)print("減法:b-a") print(np.subtract(b, a)) print(b - a)# out 參數(shù)的使用 print("乘法:a*10") c = np.empty((3, 3), dtype=np.int) np.multiply(a, 10, out=c) print(c)# out 參數(shù)的使用 print("除法:a*2") d = np.empty((3, 3)) np.divide(a, 2, out=d) print(d)# 三角函數(shù) print("三角函數(shù)") a = np.array([0, 30, 60, 90]) print(np.sin(a))print("around:四舍五入 ceil:向下取整 floor:向上取整") a = np.array([3.99, 7.12, 9, 6, 7.23, 3.1, 6.55]) print("around:", np.around(a)) print("ceil:", np.ceil(a)) print("floor:", np.floor(a))# 聚合函數(shù) """ 常用聚合函數(shù) 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 //無(wú)窮大 np.exp(10) //以e為底的指數(shù) np.log(10) //對(duì)數(shù) """print("簡(jiǎn)單的sum(),max(),min()") a = np.array([6,7,9,5,3,4,1,2]) print("sum:",np.sum(a)) print("max:",np.max(a)) print("min:",np.min(a))print("np.argmin() 最小值的下標(biāo) np.argmax() 最大值的下標(biāo)") print("argmin:",np.argmin(a)) print("argmax:",np.argmax(a))print("power的使用") a = np.arange(1,13).reshape(3,4) print("原a:\n",a) print("power后的a: \n",np.power(a,2))print("power中的out的使用") x=np.arange(5) y=np.zeros(8) np.power(2,x,out=y[:5]) print(y)# median();中位數(shù) print("一維數(shù)組的中位數(shù):偶數(shù)的中位數(shù):最中間兩個(gè)數(shù)的平均值 ""eg:[6,7,9,5,3,4,1,2] 首先進(jìn)行排序[1,2,3,4,5,6,7,9] 中位數(shù)為4+5除2=4.5") a = np.array([6,7,9,5,3,4,1,2]) print(np.median(a))print("一維數(shù)組的中位數(shù):奇數(shù)的中位數(shù):最中間的數(shù) ""eg:[6,7,9,5,3,4,1] 首先進(jìn)行排序[1,3,4,5,6,7,9] 中位數(shù)為最中間的數(shù)5") a = np.array([6,7,9,5,3,4,1]) print(np.median(a))# 二維數(shù)組求中位數(shù) 要通過axis制定軸 a = np.arange(1,13).reshape(3,4) print(a) print("垂直方向:",np.median(a,axis=0)) print("水平方向:",np.median(a,axis=1))# mean求平均值 print("一維數(shù)組求平均值") a=np.array([6,7,9,5,3,4,1,2]) print(a)print("二維數(shù)組求平均值: axis指定軸求平均") a = np.arange(1,13).reshape(3,4) print(a) print("axis=0 垂直方向:",np.mean(a,axis=0)) print("axis=1 水平方向:",np.mean(a,axis=1))https://blog.csdn.net/hanhanwanghaha寶藏女孩 歡迎您的關(guān)注!
歡迎關(guān)注微信公眾號(hào):寶藏女孩的成長(zhǎng)日記
讓這個(gè)可愛的寶藏女孩在努力的道路上與你一起同行!
如有轉(zhuǎn)載,請(qǐng)注明出處(如不注明,盜者必究)
總結(jié)
以上是生活随笔為你收集整理的numpy的基本使用 附python代码详细讲解(numpy函数,创建数组,常用属性,索引切片,数组的复制,修改维度,数组的分割、拼接、转置)的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 【测试】提交BUG的标准规范
- 下一篇: [置顶] 读取pdf并且在