1.numpy的導(dǎo)入以及查看版本
創(chuàng)新互聯(lián)總部坐落于成都市區(qū),致力網(wǎng)站建設(shè)服務(wù)有做網(wǎng)站、網(wǎng)站建設(shè)、網(wǎng)絡(luò)營銷策劃、網(wǎng)頁設(shè)計、網(wǎng)站維護(hù)、公眾號搭建、微信小程序開發(fā)、軟件開發(fā)等為企業(yè)提供一整套的信息化建設(shè)解決方案。創(chuàng)造真正意義上的網(wǎng)站建設(shè),為互聯(lián)網(wǎng)品牌在互動行銷領(lǐng)域創(chuàng)造價值而不懈努力!>>> import numpy as np
>>> print(np.__version__)
1.15.4
2.創(chuàng)建一維(或多維)數(shù)組
# 通過list初始化來創(chuàng)建
>>> np.array([1,2,3,4,5])
array([1, 2, 3, 4, 5])
# 通過arange方法生成
>>> np.arange(10)
array([0, 1, 2, 3, 4, 5, 6, 7, 8, 9])
# 指定創(chuàng)建范圍和步長
>>> np.arange(3,10,2)
array([3, 5, 7, 9])
# 二維(3,3)
>>> np.array([[1,2,3],[4,5,6],[7,8,9]])
array([[1, 2, 3],
[4, 5, 6],
[7, 8, 9]])
# 三維(2,2,2)
>>> np.array([[[1,3],[2,4]],[[3,6],[4,8]]])
array([[[1, 3],
[2, 4]],
[[3, 6],
[4, 8]]])
3.創(chuàng)建布爾數(shù)組
# 一維
>>> np.full(3, True, dtype=bool)
array([ True, True, True])
# 二維
>>> np.full((3, 3), True, dtype=bool)
array([[ True, True, True],
[ True, True, True],
[ True, True, True]])
4.從數(shù)組中提取(或替換)滿足指定條件的元素
# 提取數(shù)組中的所有奇數(shù)
>>> arr = np.arange(10)
>>> arr[arr % 2 == 1]
array([1, 3, 5, 7, 9])
# 提取大于4的數(shù)
>>> arr[arr > 4]
array([5, 6, 7, 8, 9])
# 替換所有奇數(shù)為-1
>>> arr[arr % 2 == 1] = -1
>>> arr
array([ 0, -1, 2, -1, 4, -1, 6, -1, 8, -1])
5.改變數(shù)組的形狀
>>> arr = np.arange(12)
>>> arr.reshape(2,6)
array([[ 0, 1, 2, 3, 4, 5],
[ 6, 7, 8, 9, 10, 11]])
# 設(shè)為-1維數(shù)會自動匹配
>>> arr.reshape(3,-1)
array([[ 0, 1, 2, 3],
[ 4, 5, 6, 7],
[ 8, 9, 10, 11]])
>>> arr.reshape(2,2,3)
array([[[ 0, 1, 2],
[ 3, 4, 5]],
[[ 6, 7, 8],
[ 9, 10, 11]]])
6.類型轉(zhuǎn)換
>>> a = np.arange(10)
>>> a.dtype
dtype('int32')
# 轉(zhuǎn)換為 str 類型
>>> a.astype(str)
array(['0', '1', '2', '3', '4', '5', '6', '7', '8', '9'], dtype='
# 轉(zhuǎn)換為 float 類型
>>> a.astype(float)
array([0., 1., 2., 3., 4., 5., 6., 7., 8., 9.])
7.垂直合并數(shù)組
>>> a = np.arange(8).reshape(2,4)
>>> b = np.arange(8,12)
# 方法1
>>> np.vstack((a, b))
array([[ 0, 1, 2, 3],
[ 4, 5, 6, 7],
[ 8, 9, 10, 11]])
# 方法2
>>> np.row_stack((a,b))
array([[ 0, 1, 2, 3],
[ 4, 5, 6, 7],
[ 8, 9, 10, 11]])
# 方法3,注意 concatenate 垂直合并的兩個數(shù)組維數(shù)要一致
>>> np.concatenate([a, b], axis=0)
Traceback (most recent call last):
File "", line 1, in
np.concatenate([a, b], axis=0)
ValueError: all the input arrays must have same number of dimensions
>>> np.concatenate([a, [b,b]], axis=0)
array([[ 0, 1, 2, 3],
[ 4, 5, 6, 7],
[ 8, 9, 10, 11],
[ 8, 9, 10, 11]])
# 方法4,合并的兩個數(shù)組維數(shù)要一致
>>> np.r_[a,[b,b]]
array([[ 0, 1, 2, 3],
[ 4, 5, 6, 7],
[ 8, 9, 10, 11],
[ 8, 9, 10, 11]])
8.水平合并數(shù)組
>>> a = np.arange(8).reshape(2,4)
>>> b = np.arange(8,12).reshape(2,2)
# 方法1
>>> np.hstack((a,b))
array([[ 0, 1, 2, 3, 8, 9],
[ 4, 5, 6, 7, 10, 11]])
# 方法2
>>> np.column_stack((a,b))
array([[ 0, 1, 2, 3, 8, 9],
[ 4, 5, 6, 7, 10, 11]])
# 方法3
>>> np.concatenate([a, b], axis=1)
array([[ 0, 1, 2, 3, 8, 9],
[ 4, 5, 6, 7, 10, 11]])
# 方法4
>>> np.c_[a,b]
array([[ 0, 1, 2, 3, 8, 9],
[ 4, 5, 6, 7, 10, 11]])
9.保存和讀取txt(或csv)
>>> filename = 'data.txt' # or filename = 'data.csv'
>>> a = np.arange(12).reshape(3,4)
# 保存:fmt 指定保存的數(shù)據(jù)類型,delimiter 指定分隔符
>>> np.savetxt(filename, a, fmt='%d', delimiter=',')
# 讀取:dtype 指定讀取后的類型,delimiter 指定分隔符
>>> np.loadtxt(filename, dtype=float, delimiter=',')
array([[ 0., 1., 2., 3.],
[ 4., 5., 6., 7.],
[ 8., 9., 10., 11.]])
10.數(shù)組的特殊運(yùn)算
>>> a = np.arange(10)
>>> a.sum() # 求和
45
>>> a.max() # 求大值
9
>>> a.min() # 求最小值
0
>>> a.mean() # 求平均值
4.5
>>> a.ptp() # 求數(shù)組中元素大值與最小值的差
9
>>> np.median(a) # 求數(shù)組的中位數(shù)
4.5
>>> np.std(a) # 求數(shù)組的標(biāo)準(zhǔn)差
2.8722813232690143
>>> np.var(a) # 求數(shù)組的方差
8.25
>>> a ** 2 # a中每個數(shù)平方
array([ 0, 1, 4, 9, 16, 25, 36, 49, 64, 81], dtype=int32)
>>> a.dot(a) # 點(diǎn)積運(yùn)算,對應(yīng)元素相乘后求和,返回一個標(biāo)量
285
>>> a.dot(a.T) # a.T是a的轉(zhuǎn)置,也可以用 a.transpose()
285
11.創(chuàng)建零矩陣、1矩陣、單位陣
>>> np.zeros((2, 3)) # 零矩陣
array([[0., 0., 0.],
[0., 0., 0.]])
>>> np.ones((4, 3)) # 1矩陣
array([[1., 1., 1.],
[1., 1., 1.],
[1., 1., 1.],
[1., 1., 1.]])
>>> np.identity(3) # 單位陣,也可以用 np.eye(3)
array([[1., 0., 0.],
[0., 1., 0.],
[0., 0., 1.]])
12.矩陣的特殊運(yùn)算
(1)array內(nèi)積運(yùn)算np.dot()
# 一維內(nèi)積,對應(yīng)元素相乘后求和
>>> A=np.array([1, 2, 3])
>>> B=np.array([4, 5, 6])
>>> A.dot(B) # or A.dot(B.T)
32?無錫×××醫(yī)院 https://yyk.familydoctor.com.cn/20612/
# 二維內(nèi)積,矩陣A[m,n]的列數(shù)等于矩陣B[n,p]的行數(shù),與線性代數(shù)的矩陣乘法相同(C[i,j] = sum(A[i,k] * B[k,i]), k in [i,n])
# 假設(shè)C=A·B,則C[1,1] = A[1,1]*B[1,1] + A[1,2]*B[2,1] + A[1,3]*B[3,1] = 1*2 + 2*2 + 3*2 = 12
>>> A=np.array([[1, 2, 3], [4, 5, 6]]) # (2, 3)
>>> B=np.array([[2, 3], [2, 3], [2, 3]]) # (3, 2)
>>> A.dot(B) # or np.dot(A, B)
array([[12, 18],
[30, 45]])
(2)array元素乘法運(yùn)算np.multiply()
# 元素的乘法運(yùn)算是矩陣指對應(yīng)元素相乘,可以用np.multiply(),也可以直接寫" * "運(yùn)算符
# 元素的乘法運(yùn)算要求兩個矩陣的維數(shù)必須要一致
# 一維數(shù)組
>>> A=np.array([1, 2, 3])
>>> B=np.array([4, 5, 6])
>>> A * B
array([ 4, 10, 18])
>>> np.multiply(A, B)
array([ 4, 10, 18])
# 二維數(shù)組
>>> A = np.arange(8)
>>> A = A.reshape(2,4)
>>> A
array([[0, 1, 2, 3],
[4, 5, 6, 7]])
>>> A * A
array([[ 0, 1, 4, 9],
[16, 25, 36, 49]])
>>> np.multiply(A, A)
array([[ 0, 1, 4, 9],
[16, 25, 36, 49]])
(3)matrix乘法運(yùn)算
# matrix乘法運(yùn)算可使用np.matmul(),也可使用" * "運(yùn)算符
# matrix乘法運(yùn)算與array的二維內(nèi)積相同,所以也可以用np.dot()
>>> MA = np.matrix([[1, 2, 3], [4, 5, 6]])
>>> MB = np.matrix([[2, 3], [2, 3], [2, 3]])
>>> MA
matrix([[1, 2, 3],
[4, 5, 6]])
>>> MB
matrix([[2, 3],
[2, 3],
[2, 3]])
>>> MA * MB
matrix([[12, 18],
[30, 45]])
>>> np.matmul(MA, MB) # or np.dot(MA, MB), MA.dot(MB)
matrix([[12, 18],
[30, 45]])
(4)笛卡爾積運(yùn)算
# 笛卡爾積也稱為直積,其實就是集合的映射關(guān)系,可以用itertools.product()來實現(xiàn)
# 比如A={a, b},B={1,2,3},則A和B的笛卡爾積為{(a,1), (a,2), (a,3), (b,1), (b,2), (b,3)}
>>> import itertools
>>> A = np.array(['a', 'b'])
>>> B = np.array([1, 2, 3])
>>> D = itertools.product(A, B)
>>> list(D) # 直接轉(zhuǎn)list,list中每個元素為tuple類型
[('a', 1), ('a', 2), ('a', 3), ('b', 1), ('b', 2), ('b', 3)]
# 也可以通過循環(huán)來遍歷D
>>> for d in D:
print(d)
('a', 1)
('a', 2)
('a', 3)
('b', 1)
('b', 2)
('b', 3)
待更新:
python數(shù)據(jù)分析系列(二)——Matplotlib的使用
python數(shù)據(jù)分析系列(三)——Scipy的使用
另外有需要云服務(wù)器可以了解下創(chuàng)新互聯(lián)cdcxhl.cn,海內(nèi)外云服務(wù)器15元起步,三天無理由+7*72小時售后在線,公司持有idc許可證,提供“云服務(wù)器、裸金屬服務(wù)器、高防服務(wù)器、香港服務(wù)器、美國服務(wù)器、虛擬主機(jī)、免備案服務(wù)器”等云主機(jī)租用服務(wù)以及企業(yè)上云的綜合解決方案,具有“安全穩(wěn)定、簡單易用、服務(wù)可用性高、性價比高”等特點(diǎn)與優(yōu)勢,專為企業(yè)上云打造定制,能夠滿足用戶豐富、多元化的應(yīng)用場景需求。