轉(zhuǎn)自:python中numpy模塊教程 - 一張A4紙
numpy元素的屬性
numpy的所有值都有以下幾個(gè)屬性
A = np.arange(12).reshape(3, 4).astype(np.float32)
print(A.ndim)
print(A.shape)
print(A.size)
print(A.dtype)
print(A.itemsize)
# 輸出結(jié)果為
# 2
# (3, 4)
# 12
# float32
# 4
A.ndim
數(shù)組軸的個(gè)數(shù),在python的世界中,軸的個(gè)數(shù)被稱作秩
A.shape
數(shù)組的維度驻龟。
A.size
數(shù)組元素的總個(gè)數(shù)辜窑。
A.dtype
元素的數(shù)據(jù)類型左胞。
A.itemsize
數(shù)組中每個(gè)元素的字節(jié)大小。
生成數(shù)列
指定值的增量
data = np.arange(10, 30, 5)
print(data) # [10 15 20 25]
指定值的個(gè)數(shù)
data = np.linspace(1, 10, 5)
print(data) # [ 1. 3.25 5.5 7.75 10. ]
生成矩陣
data = np.array([[2, 3, 4], [4, 5, 6]], dtype=np.float32)
print(data)
# [[ 2. 3. 4.]
# [ 4. 5. 6.]]
生成全是0的矩陣
data = np.zeros((3, 4))
print(data)
# [[ 0. 0. 0. 0.]
# [ 0. 0. 0. 0.]
# [ 0. 0. 0. 0.]]
生成全是1的矩陣
data = np.ones((3, 4))
print(data)
# [[ 1. 1. 1. 1.]
# [ 1. 1. 1. 1.]
# [ 1. 1. 1. 1.]]
生成隨機(jī)數(shù)據(jù)
隨機(jī)生成0~1之間的數(shù)
data = np.random.random()
print(data) #0.01447623686510957
隨機(jī)生成指定范圍內(nèi)的浮點(diǎn)數(shù)
data = np.random.uniform(10,20)
print(data)
# 14.646829941471552
隨機(jī)整數(shù)
data = np.random.randint(10,20)
print(data)
# 17
隨機(jī)生成一個(gè)矩陣
data = np.random.random((3,4))
print(data)
# [[ 0.77829489 0.63959774 0.83723733 0.95292845]
# [ 0.78949057 0.38655045 0.79205805 0.06847395]
# [ 0.5284635 0.95181041 0.39267602 0.23638718]]
多維矩陣
data = np.random.random((2,3,4))
print(data)
# [[[ 0.36605927 0.47719931 0.16654015 0.17585629]
# [ 0.66085507 0.09883734 0.22603851 0.91388161]
# [ 0.33416014 0.82187631 0.91063299 0.25781208]]
#
# [[ 0.56585862 0.09606677 0.84916434 0.26007262]
# [ 0.16145394 0.61120144 0.75447741 0.40179179]
# [ 0.55887648 0.45416114 0.17644248 0.43142769]]]
合并
A = np.array([1, 1, 1])
B = np.array([2, 2, 2])
#縱向合并
print(np.vstack((A, B)))
#橫向合并
print(np.hstack((A, B)))
# [[1 1 1]
# [2 2 2]]
#
# [1 1 1 2 2 2]
增加維度
添加一個(gè)橫向的維度
A = np.array([1, 1, 1])
B = A[np.newaxis, :]
print(A.shape)
print(B.shape)
print(B)
# (3,)
# (1, 3)
# [[1 1 1]]
添加一個(gè)縱向的維度
A = np.array([1, 1, 1])
B = A[:,np.newaxis]
print(A.shape)
print(B.shape)
print(B)
# (3,)
# (3, 1)
# [[1]
# [1]
# [1]]
分割
A = np.arange(12).reshape(3, 4)
print(A)
#橫向分割
print(np.vsplit(A, 3))
#縱向分割
print(np.hsplit(A, 2))
#可以在參數(shù)中指定分割哪個(gè)坐標(biāo)
print(np.split(A, 3, axis=0))
print(np.split(A, 2, axis=1))
#不等量分割
print(np.array_split(A, 3, axis=1))
深層拷貝
在numpy中直接用"="號(hào)賦值,相當(dāng)于賦予的是指針,賦值前后的"兩個(gè)"變量是同"一個(gè)"變量.比如,下面的變量a,b,改變a,b也會(huì)跟著變化.
a = np.array([1, 2, 3])
b = a
a[0] = 666
print(a)
print(b)
#[666 2 3]
#[666 2 3]
如果想要兩個(gè)變量不關(guān)聯(lián),需要這樣拷貝
b = a.copy()
運(yùn)算
numpy中矩陣的加法減法的運(yùn)算和普通的加減運(yùn)算相同,但是矩陣乘法的運(yùn)算需要用dot函數(shù),如下
A = np.array([[2, 3],
[4, 7]])
B = np.array([[1, 2],
[3, 4]])
print(A + B)
print(A - B)
print(np.dot(A, B))
# [[ 3 5]
# [ 7 11]]
#
# [[1 1]
# [1 3]]
#
# [[11 16]
# [25 36]]
索引與切片
numpy中的索引與切片功能比python中的切片更加強(qiáng)大
索引多維數(shù)組
data = np.random.random((3,4,5))
print(data[0,2,3])
索引多維數(shù)組的時(shí)候也可以用切片
data = np.random.random((3,4,5))
print(data[1,:,3])
print(data[:2,:,3])