太原小程序開發(fā)定制學(xué)校seo推廣培訓(xùn)班
人有一種天生的、難以遏制的欲望,那就是在理解之前就評(píng)判。? ? -- 米蘭·昆德拉
多維數(shù)組?
1. 一維數(shù)組只有行,二維數(shù)組相比一維數(shù)組多了列這個(gè)維度,而三維數(shù)組則類似多個(gè)二維數(shù)組堆疊在一起,形如一個(gè)立方體。
二維數(shù)組的創(chuàng)建
1. 二維數(shù)組相當(dāng)于單層的嵌套列表。并且我們可以將單層嵌套列表傳入?np.array()?方法創(chuàng)建一個(gè)二維數(shù)組。
2.?ones()?和 zeros() 方法同樣也能快速創(chuàng)建元素全為 1 和 0 的二維數(shù)組。與之前的區(qū)別在于,創(chuàng)建二維數(shù)組要傳入一個(gè)包含行和列信息的元組。
3.?更多維的數(shù)組的創(chuàng)建,只要傳入嵌套層數(shù)更多的列表即可。
import numpy as nplist_1=[[1, 2], [3, 4]]
print(list_1)
# [[1, 2], [3, 4]]list_2=np.array([[1, 2], [3, 4]])
print(list_2)
# [[1 2]
# [3 4]]
import numpy as np
list_1=np.ones((3,4)) # 3行4列
print(list_1)#[[1. 1. 1. 1.]
# [1. 1. 1. 1.]
# [1. 1. 1. 1.]]
多維數(shù)組的性質(zhì)
1. ndim:多維數(shù)組的維度個(gè)數(shù)。例如:二維數(shù)組的?ndim?為 2;
2. shape:多維數(shù)組的形狀。對(duì)于 m 行和 n 列的數(shù)組,它的?shape?將是?(m,n)。因此,shape?元組的長(zhǎng)度(元素個(gè)數(shù))就是?ndim?的值;
3. size:多維數(shù)組中所有元素的個(gè)數(shù)。shape?元組中每個(gè)元素的乘積就是?size?的值;
4. dtype:多維數(shù)組中元素的類型。? ??
data = np.array([[1, 2, 3], [4, 5, 6]])print('ndim:', data.ndim)
print('shape:', data.shape)
print('size:', data.size)
print('dtype:', data.dtype)# ndim: 2
# shape: (2, 3)
# size: 6
# dtype: int64
?二維數(shù)組的加減乘除
1.?二維數(shù)組間的加減乘除和一維數(shù)組間的并無(wú)大致,也是對(duì)應(yīng)位置的元素進(jìn)行計(jì)算。?
2.?維度一樣的數(shù)組間可以進(jìn)行計(jì)算的條件是形狀(shape)一樣,形狀不一樣的數(shù)組元素?zé)o法一一對(duì)應(yīng),因此無(wú)法計(jì)算,導(dǎo)致報(bào)錯(cuò)。
3. 廣播原則:先補(bǔ)齊行軸,再往列軸方向進(jìn)行復(fù)制。
二維數(shù)組的通用方法?
1. 二維數(shù)組的通用方法和一維數(shù)組的通用方法的基本用法類似,只是多了一個(gè)維度的數(shù)據(jù)。
2.?二維數(shù)組不僅可以對(duì)所有數(shù)據(jù)進(jìn)行計(jì)算,還可以針對(duì)某個(gè)維度上的數(shù)據(jù)進(jìn)行計(jì)算。
3.?這里就要引入一個(gè)概念——軸(axis)。軸和維度的概念是類似的,一維數(shù)組有 1 個(gè)軸,二維數(shù)組有 2 個(gè)軸,三維數(shù)組有 3 個(gè)軸等等。
import numpy as np
data = np.array([[1, 2], [5, 3], [4, 6]])# 不指定 axis
print(data.max())
# 輸出:6# axis=0
print(data.max(axis=0))
# 輸出:[5 6]# axis=1
print(data.max(axis=1))
# 輸出:[2 5 6]
?二維數(shù)組的索引和分片
1. 二維數(shù)組的索引和分片同樣和一維數(shù)組類似,只是在行索引的基礎(chǔ)上再加上列索引。
2. 形如?data[m,n],其中?data?是二維數(shù)組,m?是行索引或分片,n?是列索引或分片。?
3.?如果省略第二個(gè)參數(shù)?n?的話表示獲取所有列,data[0]?就表示獲取整個(gè)第一行,相當(dāng)于?data[0, :]。
data = np.array([[1, 2], [3, 4], [5, 6]])print(data[0, 1])
# 2print(data[:, 0])
# [1 3 5]print(data[1:3])
# [[3 4]
# [5 6]]
?布爾索引
1. 布爾索引,顧名思義就是用布爾值作為索引去獲取需要的元素。?
2. and?改用?&,or?改用?|,not 改用?~,并且每個(gè)條件要用括號(hào)括起來(lái)。
data = np.array([[1, 2], [3, 4], [5, 6]])
print(data[data > 3])
# 輸出:[4 5 6]# 大于 3 或者不小于 2(即大于等于 2)
print(data[(data > 3) | ~(data < 2)])
# 輸出:[2 3 4 5 6]
?實(shí)用方法
arange() 方法
1. numpy 中的?arange()?方法和 Python 中的?rang()?用法類似,不同之處在于?arange()?方法生成的是數(shù)組,而?rang()?方法生成的是?rang?類型的序列。
# 生成 1-9 的數(shù)組
print(np.arange(1, 10))
# 輸出:[1 2 3 4 5 6 7 8 9]# 生成 0-9 的數(shù)組
print(np.arange(10))
# 輸出:[0 1 2 3 4 5 6 7 8 9]# 生成 1-9 的數(shù)組,步長(zhǎng)為 2
print(np.arange(1, 10, 2))
# 輸出:[1 3 5 7 9]
?隨機(jī)方法
1. Python 中有 random 模塊來(lái)生成隨機(jī)數(shù),numpy 針對(duì)多維數(shù)組也集成了 random 模塊,并且更加方便好用。
2. 這里只介紹其中的?rand()?方法和?randint()?方法,更多方法大家可以在需要時(shí)查詢使用。?
3. numpy 中的?np.random.rand()?方法和 Python 中?random.rand()?方法類似,都是生成?[0,1)?之間的隨機(jī)小數(shù)。
4. 不同的是,numpy 中的??np.random.rand()?方法可以生成多個(gè)?[0,1)?之間的隨機(jī)小數(shù),只需我們傳入要生成的隨機(jī)數(shù)組的形狀(shape)即可。
5. 同理,numpy 中的?np.random.randint()?方法和 Python 中的?random.randint()?類似.
6. 不同之處在于,random.randint()?生成的是?[m,n]?之間的整數(shù),而?np.random.randint()?生成的是?[m,n)?之間的整數(shù)。
# 不傳參數(shù)時(shí)
print(np.random.rand())
# 輸出:0.1392571183916036# 傳入一個(gè)參數(shù)時(shí)
print(np.random.rand(3))
# 輸出:[0.7987698 0.52115291 0.70452156]# 傳入多個(gè)參數(shù)時(shí)
print(np.random.rand(2, 3))
# 輸出:
# [[0.08539006 0.97878203 0.23976172]
# [0.34301963 0.48388704 0.63304024]]
# 不傳入形狀時(shí)
print(np.random.randint(0, 5))
# 輸出:3# 形狀為一維數(shù)組時(shí)
print(np.random.randint(0, 5, 3))
# 輸出:[4 0 1]# 形狀為二維數(shù)組時(shí)
print(np.random.randint(0, 5, (2, 3)))
# 輸出:
# [[0 2 1]
# [4 2 0]]
genfromtxt() 方法
1. genfromtxt() 方法用于文件的讀取。
2. genfromtxt() 方法常用的參數(shù)有兩個(gè),分別是數(shù)據(jù)源和分隔符。
3. 第一個(gè)參數(shù)是數(shù)據(jù)源,可以是本地文件的路徑,也可以是網(wǎng)絡(luò)文件的地址。
4. 第二個(gè)delimiter?參數(shù)用于指定分隔符,CSV 文件一般是用逗號(hào)作為分隔符,當(dāng)遇到其他符號(hào)分隔的文件時(shí),用?delimiter?參數(shù)進(jìn)行指定即可。
5. genfromtxt()?方法的返回值是一個(gè)多維數(shù)組。
import numpy as np
data=np.genfromtxt('data.csv',delimiter=',')
print(data)
致謝
? 感謝您花時(shí)間閱讀這篇文章!如果您對(duì)本文有任何疑問(wèn)、建議或是想要分享您的看法,請(qǐng)不要猶豫,在評(píng)論區(qū)留下您的寶貴意見。每一次互動(dòng)都是我前進(jìn)的動(dòng)力,您的支持是我最大的鼓勵(lì)。期待與您的交流,讓我們共同成長(zhǎng),探索技術(shù)世界的無(wú)限可能!