numpy的random與基本計算
阿新 • • 發佈:2021-01-12
- Random 產生,隨機數
- 引數(並不是所有方法都含有以下全部引數,具體根據使用方法而定)
引數 | 說明 |
start | 隨機範圍的下邊界 |
end | 隨機範圍的上邊界 |
size | 隨機結果的形態 |
dtype | 隨機結果的型別 |
def random():
# numpy.random.randint(start, end, size, dtype=None)
# 隨機生成元素區間 [1, 100) 且元素個數為 12 的int64型別陣列
arr1 = np.random.randint(1, 100, 12, dtype=np.int64)
# 更改陣列形狀為 3*4
# arr1: [ [72 83 38 32]
# [12 36 17 92]
# [19 34 57 20] ]
arr1 = arr1.reshape(3, 4)
# numpy.random.random(size)
# 生成位於區間 [0, 1)之間返回隨機浮點數
# arr2: [0.480343 0.84162194 0.52011533 0.71096837 0.67357815 0.94794846]
arr2 = np.random.random(6)
# 生成 3*2 的隨機陣列
# arr3: [ [0.00876662 0.09294199 0.23165923]
# [0.47272696 0.83836171 0.11378513] ]
arr3 = np.random.random(size=(2, 3))
# numpy.random.shuffle(x)
# 隨機打亂原來的陣列
arr4 = np.arange(0, 6, 1)
# arr4: [2 0 4 3 5 1]
np.random.shuffle(arr4)
# 打亂以第一個索引為標準,即:一維陣列arr[],打亂元素;二維陣列arr[],打亂行,以此類推
arr5 = np.arange(0, 6, 1).reshape(2, 3)
# arr5: [ [3 4 5]
# [0 1 2] ]
np.random.shuffle(arr5)
- 轉置,矩陣乘法,陣列加減乘法,截斷
- np.transpose(arr) 或 arr.T , arr的轉置
- np.dot(arr1, arr2) 或 arr1@arr2 , 矩陣乘法
- arr.clip(low, high) ,截斷
- arr1+arr2
# 陣列的加減乘,矩陣乘法,轉置,截斷
def operation1():
# 生成二維陣列 a
a = np.array([
[1, 5],
[4, 6]
], dtype=np.int)
# 矩陣的轉置,也可以 np.transpose(a)
# [ [1 4]
# [5 6] ]
print("轉置矩陣:\n", a.T)
# A的轉置乘以A
# [ [17 29]
# [29 61] ]
print("實對稱矩陣:\n", np.dot(a.T, a))
# A的轉置乘以A
print("a@a:\n", a.T @ a)
# clip截斷,這是指先把所有小於3的元素變3,再把所有大於5的元素變5
# [ [3 5]
# [4 5] ]
print("clip:\n", a.clip(3, 5))
# 全部為3,先把所有小於6的變6,再把所有大於3的變3
# [ [3 3]
# [3 3] ]
print("clip:\n", a.clip(6, 3))
# b = np.array([
# [2, 3],
# [4, 5]
# ])
b = np.arange(2, 6, 1, dtype=np.int).reshape(2, 2)
# 進行陣列的加減運算,對應元素進行加減運算
# [ [ 3 8]
# [ 8 11] ]
print("a+b:\n", a + b)
# [ [-1 2]
# [ 0 1] ]
print("a-b:\n", a - b)
# 陣列a進行自乘,對應元素自乘
# [ [ 1 25]
# [16 36] ]
print("a**2:\n", a ** 2)
# 陣列a與b相乘,對應元素相乘,注意這裡不是矩陣乘法
# [ [ 2 15]
# [16 30] ]
print("a*b:\n", a * b)
- 陣列元素求和,按行、按列,最大、最小、平均值、中位數等
方法 | 說明 |
sum | 所有元素求和 |
max | 最大值 |
min | 最小值 |
mean | 平均值 |
median | 中位數 |
cumsum | 累加求和 |
argmax | 最大值索引 |
# 陣列元素求和,按行、按列,最大、最小、平均值、中位數等
def operation2():
arr = np.array([
[1, 3, 5],
[2, 4, 6]
])
# arr本身就是np生成的物件,可以用np的sum方法
# 21
print("元素求和:", arr.sum())
# 使用np呼叫方法也行, 對於二維陣列來說,引數axis=0 對每一列求和,axis=1 對每一行求和
# axis 按維度軸方向求和
# [3 7 11]
print("元素按列求和:", np.sum(arr, axis=0))
# 其它也同理,可用np呼叫,或者物件呼叫,求解每行的最小值
# [1 2]
print("最小值:", np.min(arr, axis=1))
# 求最大值
# 6
print("最大值:", np.max(arr))
# 平均值
# 3.5
print("平均值:", np.mean(arr))
# 中位數
# 3.5
print("中位數:", np.median(arr))
# 累加求和
# [1 4 9 11 15 21]
print("累加求和:", np.cumsum(arr))
# 所有元素最大值的索引,從0開始,如 2行3列的元素,索引為 0~5
# 5
print("最大元素索引:", arr.argmax())