一、在numpy中生成各种分布的伪随机数
# 1、随机种子
np.random.seed(0)
# 2、产生在[0.0, 1.0)中的随机数并形成2*3*5的三维数组
np.random.rand(2, 3, 5)
# 3、产生标准正态分布随机数并形成3*5的矩阵
np.random.randn(3, 5)
# 4、产生100个均值为3,标准差为5的N(3,5)随机数
np.random.normal(3, 5, 100)
# 5、产生100个上下界分别为3和5的均匀分布随机数
np.random.uniform(3, 7, 100)
# 6、产生34个[3,30)中的随机整数
np.random.randint(3, 30, 34)
# 7、从数组X中给定概率P放回抽样随机抽取20个样本
np.random.choice(x, 20, replace=True, p=[0.1, 0.3, 0.6])
# 8、从数组X中给定概率P不放回抽样随机抽取20个样本
np.random.choice(x, 20, replace=False)
# 9、把0-9的自然数随机排列
np.random.permutation(range(10))
二、数组产生
1、np.array直接生成
x0 = [[1, 3, -5], [3, 4], 'it is a world', (2,6), {3:51, 'T':(2,1)}]
np.array(x0)
输出为:
array([list([1, 3, -5]), list([3, 4]), "it's a world", (2, 6),
{3: 51, 'T': (2, 1)}], dtype=object)
2、等差序列np.linspace和np.arange
(1)np.linspace(起始, 终止(包含), 样本个数)
np.linspace(0, 9, 10)
输出结果:
array([0., 1., 2., 3., 4., 5., 6., 7., 8., 9.])
(2)np.arange(起始, 终止(不包含), 步长)
np.arange(0, 9, 1)
输出结果:
array([0, 1, 2, 3, 4, 5, 6, 7, 8])
3、特殊矩阵:zeros、eye、full、empty、diag、triu、tril
(1)零矩阵:np.zeros()
np.zeros((2, 3)) # 传入元组维度的大小
输出:
array([[0., 0., 0.],
[0., 0., 0.]])
(2) 单位矩阵:np.eye()
np.eye(3)
输出结果:
array([[1., 0., 0.],
[0., 1., 0.],
[0., 0., 1.]])
(3)np.full()
np.full((3, 3), 10) # 第一个参数是元组的维度,第二个参数是填充数值
输出结果:
array([[1, 1, 1],
[1, 1, 1],
[1, 1, 1]])
(4) 空矩阵 np.empty()
np.empty((2, 3)) # 产生一个2*3的空数组,里面的值都是随机值
输出结果:
array([[0., 0., 0.],
[0., 0., 0.]])
(5) 对角矩阵 np.diag()
(6)上三角矩阵np.triu( )/下三角矩阵np.tril( )
4、 通过函数来构造矩阵
下面是产生元素为行指标(i)和列指标(j)函数矩阵
np.fromfunction(lambda i, j: i**2 + i*j, (3, 4))
输出为:
array([[ 0., 0., 0., 0.],
[ 1., 2., 3., 4.],
[ 4., 6., 8., 10.]])