numpy的random与基本计算
- Random 产生随机数
- randint(start, end, size, dtype=None) ,随机产生整数
- random(size) ,随机产生 [0, 1)的浮点数
- shuffle(array) , 随机打乱原数组
- 参数(并不是所有方法都含有以下全部参数,具体根据使用方法而定)
参数
|
说明 |
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,arr1-arr2,arr1*arr2,arr1**2
# 数组的加减乘,矩阵乘法,转置,截断
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)