0
点赞
收藏
分享

微信扫一扫

Numpy快速入门(四)——随机抽样与通用函数

目录

一、随机抽样(np.random模块)

函数作用
np.random.random(size=None)size是整数整型元组;生成 [0, 1) 之间的随机数
np.random.uniform(a=0.0, b=1.0, size=None)生成 [a, b) 上的均匀分布的随机数
np.random.randn(d0, d1, …, dn)d0, d1, …, dn控制形状;生成标准正态的随机数
np.random.randint(a, b=None, size=None)生成 [a, b) 上的随机整数;当 b 省略时,生成 [0, a) 上的随机整数
np.random.rand(d0, d1, …, dn)与random.random的效果一样,只不过size不再是元组
np.random.normal(mu=0.0, sigma=1.0, size=none)生成正态分布的随机数

1.1 np.random.random()

print(np.random.random())
# 0.7244562837682348
print(np.random.random(2))
# [0.22283098 0.72975332]
print(np.random.random((2, 2)))
# [[0.30166809 0.39634144]
#  [0.75755076 0.9186064 ]]

1.2 np.random.uniform()

print(np.random.uniform(2, 4))
# 2.8381002639487756
print(np.random.uniform(2, 4, (2, 2)))
# [[2.66832969 3.97791269]
#  [3.28302481 2.77316893]]

1.3 np.random.randn()

print(np.random.randn())
# 0.07619658670655587
print(np.random.randn(1))
# [0.15591832]
print(np.random.randn(2, 2))
# [[ 1.80289612  1.26520523]
#  [-0.18691585 -1.07256013]]

1.4 np.random.randint()

print(np.random.randint(1, 10))
# 2
print(np.random.randint(1, 10, (2, 2)))
# [[2 7]
#  [2 3]]

1.5 np.random.rand()

print(np.random.rand())
# 0.4294526669056693
print(np.random.rand(2, 3))
# [[0.98298448 0.93969596 0.1592919 ]
#  [0.4399961  0.52320823 0.5306809 ]]

1.6 np.random.normal()

print(np.random.normal(0, 1, (2, 3)))
# [[-1.42867251  1.07133406 -0.41702297]
#  [ 0.83092417  0.17981133  2.15503384]]
print(np.random.normal(2, 100, (2, 3)))
# [[ -8.0837793  161.39657097  35.2570548 ]
#  [ 72.32855794  51.32771614  10.86325406]]

二、常用数学/统计函数

常用数学函数:

函数作用
np.sin、np.cos三角函数
np.sqrt平方根
np.exp指数函数
np.log、np.log10、np.log2对数函数
np.abs绝对值
np.sum求和
np.prod求积

常用统计函数:

函数作用
np.median计算中位数
np.mean计算平均值
np.std计算标准差
np.var计算方差
np.corrcoef计算相关系数

三、常用逻辑函数

3.1 真值测试

函数作用
np.all(a, axis=None)判断数组a在沿axis方向上的值是否都为True;axis为None时会判断沿所有方向的值是否都为True
np.any(a, axis=None)判断数组a在沿axis方向上的值是否至少有一个为True

3.1.1 np.all()

A = np.array([[True, False],[True, True]])
print(np.all(A))
print(np.all(A, axis=0))
print(np.all(A, axis=1))
# False
# [ True False]
# [False  True]
print(np.all([1, 1]))
print(np.all([1, 0]))
print(np.all([0, 0]))
# True
# False
# False

3.1.2 np.any()

A = np.array([[True, False],[True, False]])
print(np.any(A))
print(np.any(A, axis=0))
print(np.any(A, axis=1))
# True
# [ True False]
# [ True  True]
print(np.any([1, 1]))
print(np.any([1, 0]))
print(np.any([0, 0]))
# True
# True
# False

3.2 比较函数

函数作用
np.array_equal(a1, a2)如果数组a1和a2的形状相同且其中的元素也相同,则返回True,否则返回False
np.allclose(a, b, rtol=1e-5, atol=1e-8)rtol是相对容忍度,atol是绝对容忍度;如果数组a和b在容忍度内按元素相等,则返回True,否则返回False

3.2.1 np.array_equal()

print(np.array_equal([1, 2], [1, 2]))
print(np.array_equal(np.array([1, 2]), np.array([1, 2])))
print(np.array_equal([1, 2], [1, 2, 3]))
print(np.array_equal([1, 2], [1, 4]))
# True
# True
# False
# False

3.2.2 np.allclose()

如果数组 a 和 b 按元素满足以下不等式:

∣ a − b ∣ ≤ a t o l   +   r t o l   ⋅   ∣ b ∣ |a-b|\leq atol \, + \, rtol\, \cdot\, |b| abatol+rtolb

则 allclose 函数会返回True。可以看出,上述不等式是非对称的,因此可以得出结论:

print(np.allclose([1e10, 1e-7], [1.00001e10, 1e-8]))
print(np.allclose([1e10, 1e-8], [1.00001e10, 1e-9]))
print(np.allclose([1e10, 1e-8], [1.0001e10, 1e-9]))
# False
# True
# False
举报

相关推荐

0 条评论