python之numpy基础_Python知识普及:Numpy基础操作
原標題:Python知識普及:Numpy基礎操作
Numpy基礎數據結構
創建數組
Numpy通用函數
import numpy as np
# reshape 改變數組維度形狀
ar1 = np.arange(10)
print(ar1)
print("")
print(ar1.reshape(5, 2)) # 方式1
print("")
ar1 = np.ones((2, 5))
print(ar1)
print("")
ar1 = np.ones((2, 5)).reshape(5, 2) # 方式2
print(ar1)
print("")
ar1 = np.reshape(np.arange(9), (3,3)) # 方式3
print(ar1)
[0 1 2 3 4 5 6 7 8 9]
[[0 1]
[2 3]
[4 5]
[6 7]
[8 9]]
[[ 1. 1. 1. 1. 1.]
[ 1. 1. 1. 1. 1.]]
[[ 1. 1.]
[ 1. 1.]
[ 1. 1.]
[ 1. 1.]
[ 1. 1.]]
[[0 1 2]
[3 4 5]
[6 7 8]]
# T 數組轉置
ar2 = np.zeros((2, 5))
print(ar2)
print("")
print(ar2.T)
[[ 0. 0. 0. 0. 0.]
[ 0. 0. 0. 0. 0.]]
[[ 0. 0.]
[ 0. 0.]
[ 0. 0.]
[ 0. 0.]
[ 0. 0.]]
# resize跟reshape類似 區別是當改變數組維度時不會因數據量的不同而報錯
ar3 = np.reshape(np.arange(15), (3, 5))
print(ar3)
print("")
ar4 = np.resize(ar3, (5, 3))
print(ar4)
print("")
ar5 = np.resize(ar3, (3, 4)) # 當改變后的數組需要的數據量比原數組的數據量少時 會依次排序 多余的數值不會顯示
print(ar5)
print("")
ar6 = np.resize(ar3, (4, 5)) # 當改變后的數組需要的數據量比原數組的數據量多時 不足的會補充排序
print(ar6)
[[ 0 1 2 3 4]
[ 5 6 7 8 9]
[10 11 12 13 14]]
[[ 0 1 2]
[ 3 4 5]
[ 6 7 8]
[ 9 10 11]
[12 13 14]]
[[ 0 1 2 3]
[ 4 5 6 7]
[ 8 9 10 11]]
[[ 0 1 2 3 4]
[ 5 6 7 8 9]
[10 11 12 13 14]
[ 0 1 2 3 4]]
# np.resize(a, shape) 有返回值 不會改變原數組
ar7 = np.arange(10)
print(ar7)
print("")
ar8 = np.resize(ar7, (2, 5))
print(ar8)
print("")
print(ar7)
[0 1 2 3 4 5 6 7 8 9]
[[0 1 2 3 4]
[5 6 7 8 9]]
[0 1 2 3 4 5 6 7 8 9]
# a.resize(shape) 沒有返回值 直接改變原數組
ar7 = np.arange(10)
print(ar7)
print("")
ar8 = ar7.resize(2, 5) # 注意ar8為None 因為是改變原數組 所以沒有返回值
print(ar8)
print("")
print(ar7)
[0 1 2 3 4 5 6 7 8 9]
None
[[0 1 2 3 4]
[5 6 7 8 9]]
# 數據類型轉換 astype
ar9 = np.arange(10, dtype=np.float64)
print(ar9)
print(ar9.dtype) # 查看數值類型
print("")
ar10 = ar9.astype(np.int64) # 改變數值類型
print(ar10)
print(ar10.dtype)
[ 0. 1. 2. 3. 4. 5. 6. 7. 8. 9.]
float64
[0 1 2 3 4 5 6 7 8 9]
int64
# 數組堆疊
# hstack vstack
a = np.arange(10)
print(a)
print("")
b= np.arange(10, 20)
print(b)
print("")
c = np.hstack((a, b)) # hstack表示橫向連接
print(c)
print("")
d = np.vstack((a, b)) # vstack表示縱向連接
print(d)
print("")
[0 1 2 3 4 5 6 7 8 9]
[10 11 12 13 14 15 16 17 18 19]
[ 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19]
[[ 0 1 2 3 4 5 6 7 8 9]
[10 11 12 13 14 15 16 17 18 19]]
[[ 0 1 2 3 4 5 6 7 8 9]
[10 11 12 13 14 15 16 17 18 19]]
# stack
print(a)
print("")
print(b)
print("")
e = np.stack((a, b), axis=0) # axis=0 橫向看(縱向連接)
print(e)
print("")
e = np.stack((a, b), axis=1) # 縱向看(橫向連接)
print(e)
[0 1 2 3 4 5 6 7 8 9]
[10 11 12 13 14 15 16 17 18 19]
[[ 0 1 2 3 4 5 6 7 8 9]
[10 11 12 13 14 15 16 17 18 19]]
[[ 0 10]
[ 1 11]
[ 2 12]
[ 3 13]
[ 4 14]
[ 5 15]
[ 6 16]
[ 7 17]
[ 8 18]
[ 9 19]]
# 數組拆分
a = np.arange(16).reshape(4, 4)
print(a)
print("")
b = np.hsplit(a, 2) # 按列來切割
print(b)
print("")
c = np.vsplit(a, 2) # 按行來切割
print(c)
[[ 0 1 2 3]
[ 4 5 6 7]
[ 8 9 10 11]
[12 13 14 15]]
[array([[ 0, 1],
[ 4, 5],
[ 8, 9],
[12, 13]]), array([[ 2, 3],
[ 6, 7],
[10, 11],
[14, 15]])]
[array([[0, 1, 2, 3],
[4, 5, 6, 7]]), array([[ 8, 9, 10, 11],
[12, 13, 14, 15]])]
# 求和 sum
a = np.arange(10).reshape(2, 5)
print(a)
print("")
print(np.sum(a, axis=0)) # 0代表橫軸
print("")
print(np.sum(a, axis=1)) # 1代表縱軸
[[0 1 2 3 4]
[5 6 7 8 9]]
[ 5 7 9 11 13]
[10 35]
# 排序 sort
print(np.sort(np.array([3, 5, 5, 3, 1, 4])))
[1 3 3 4 5 5]
Numpy基本索引和切片
import numpy as np
# 一維數組
arr = np.array(range(10))
print(arr)
print("")
print(arr[4])
print(arr[:3])
print(arr[::2])
[0 1 2 3 4 5 6 7 8 9]
4
[0 1 2]
[0 2 4 6 8]
# 二維數組
arr = np.arange(20).reshape(4, 5)
print(arr)
print("")
print(arr[2]) # 取出某一行
print("")
print(arr[2][2]) # 取出某一個數
print("")
print(arr[1:3]) # 取出多行
print("")
print(arr[2, 2]) # 逗號前代表行 逗號后代表列
print("")
print(arr[:2, 1:3]) # 取出多行多列
[[ 0 1 2 3 4]
[ 5 6 7 8 9]
[10 11 12 13 14]
[15 16 17 18 19]]
[10 11 12 13 14]
12
[[ 5 6 7 8 9]
[10 11 12 13 14]]
12
[[1 2]
[6 7]]
# 三維數組
arr = np.arange(48).reshape(3,4,4) # 3個4行4列的數組
print(arr)
print("*"*30)
print(arr[2])
print("*"*30)
print(arr[2][1])
print("*"*30)
print(arr[2][1][1])
[[[ 0 1 2 3]
[ 4 5 6 7]
[ 8 9 10 11]
[12 13 14 15]]
[[16 17 18 19]
[20 21 22 23]
[24 25 26 27]
[28 29 30 31]]
[[32 33 34 35]
[36 37 38 39]
[40 41 42 43]
[44 45 46 47]]]
[[32 33 34 35]
[36 37 38 39]
[40 41 42 43]
[44 45 46 47]]
[36 37 38 39]
37
Numpy布爾型索引及切片
# 用布爾型索引去做篩選
arr = np.arange(12).reshape(3, 4)
print(arr)
print("")
a = np.array([True, False, True])
print(a)
print("")
b = np.array([True, False, False, True])
print(b)
print("")
print(arr[a, :])
print("")
print(arr[:, b])
[[ 0 1 2 3]
[ 4 5 6 7]
[ 8 9 10 11]]
[ True False True]
[ True False False True]
[[ 0 1 2 3]
[ 8 9 10 11]]
[[ 0 3]
[ 4 7]
[ 8 11]]
# 用布爾型矩陣去做篩選
print(arr)
print("")
m = arr>5
print(m)
print("")
n = arr[arr>5]
print(n)
[[ 0 1 2 3]
[ 4 5 6 7]
[ 8 9 10 11]]
[[False False False False]
[False False True True]
[ True True True True]]
[ 6 7 8 9 10 11]
Numpy隨機數生成
import numpy as np
# random.normal 正態分布隨機數
print(np.random.normal(size=(4, 4))) # 生成一個4行4列的正態分布隨機數
[[ 1.01645652 -0.30952914 -0.40576099 -0.94259139]
[-0.16483869 0.42278586 0.8260384 -0.88469832]
[ 1.31487466 -0.86188981 -0.71485117 -2.12449215]
[-1.80353888 -0.93264659 -1.1424078 0.31905742]]
# random.rand 平均分布 隨機生成 [0-1) 之間的數
a = np.random.rand() # 生成一個數
print(a)
print("")
b = np.random.rand(4) # 生成4個數
print(b)
print("")
c = np.random.rand(2,4) # 生成二維數組
print(c)
0.11426452609434679
[ 0.79633633 0.32467913 0.28038512 0.56304155]
[[ 0.06561635 0.40454132 0.58158716 0.73527881]
[ 0.59301023 0.74935326 0.24347665 0.59653582]]
# np.random.randint 在自定義的范圍內隨機生成整數
a = np.random.randint(3) # 在 [0-3)的范圍內隨機生成一個整數
print(a)
print("")
b = np.random.randint(2, 10) # [2-10)的范圍內隨機生成一個整數
print(b)
print("")
c = np.random.randint(20, size=10) # 生成一個 [0-20) 之間 有10個整數元素的一維數組
print(c)
print("")
d = np.random.randint(20, 40, size=10) # 生成一個 [20-40) 之間 有10個整數元素的一維數組
print(d)
print("")
e = np.random.randint(40, 50, size=(2, 5)) # 生成一個 [40-50) 之間 有2行5列元素的二維數組
print(e)
0
6
[ 9 11 5 12 19 4 19 1 7 10]
[24 20 34 38 37 24 26 35 35 30]
[[49 42 42 44 49]
[44 44 40 49 45]]返回搜狐,查看更多
責任編輯:
總結
以上是生活随笔為你收集整理的python之numpy基础_Python知识普及:Numpy基础操作的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: flutter怎么手动刷新_flutte
- 下一篇: jenkins配置python脚本参数_