创建数组#

import numpy as np

通过list创建#

a = np.array([[1, 2, 3], [2, 3, 4]])
a
array([[1, 2, 3],
       [2, 3, 4]])
# 查看数组形状,是一个2行、3列的数组
a.shape
(2, 3)

创建常见数组#

# 创建指定形状,元素全为0的数组
np.zeros((4, 5))
array([[0., 0., 0., 0., 0.],
       [0., 0., 0., 0., 0.],
       [0., 0., 0., 0., 0.],
       [0., 0., 0., 0., 0.]])
# 元素全为1的数组
np.ones((2, 3, 4))
array([[[1., 1., 1., 1.],
        [1., 1., 1., 1.],
        [1., 1., 1., 1.]],

       [[1., 1., 1., 1.],
        [1., 1., 1., 1.],
        [1., 1., 1., 1.]]])
# 创建等差数列,参数为(start, end, step)
np.arange(1, 10, 2)
array([1, 3, 5, 7, 9])
# 创建等差数列,参数为(start, end, number)
np.linspace(0, 2, 5)
array([0. , 0.5, 1. , 1.5, 2. ])

指定数据类型#

# 查看数组数据类型
a.dtype
dtype('int64')
# 创建数组时指定数据类型
x = np.ones((2, 3), dtype=np.float32)
x.dtype
dtype('float32')
# 通过astype改变数据类型,必须赋值才可以
x = x.astype(np.float64)
x.dtype
dtype('float64')

随机数组#

# 指定size的[0, 1)间均匀分布
np.random.random(10), np.random.rand(3, 2)
(array([0.07321444, 0.21448377, 0.80332896, 0.14180708, 0.94717355,
        0.55352441, 0.36359051, 0.32094518, 0.08718674, 0.11441867]),
 array([[0.6498522 , 0.28313587],
        [0.11012505, 0.58813332],
        [0.68538013, 0.07783822]]))
# 标准正态分布
np.random.randn(2, 3)
array([[-1.27137123, -1.72454277,  0.91212217],
       [-0.72829503, -0.77168279, -1.32224655]])
# 正态分布,参数为(mean, std, size)
np.random.normal(1, 2, (2, 2))
array([[-0.23676871,  0.6460357 ],
       [ 1.42808547,  1.84584404]])
# 多维正态分布,参数为(mean, covariance, size)
np.random.multivariate_normal([0, 0], [[2, 1], [1, 3]], 10)
array([[ 1.38195025, -1.15768835],
       [ 0.22548831,  0.46395142],
       [ 2.52972501,  2.02646219],
       [ 2.60153462,  0.34430792],
       [-1.06295603,  1.28160624],
       [ 0.84106914,  2.35040432],
       [ 3.47730558,  2.61303685],
       [ 1.09872877,  1.14198704],
       [ 0.29423271,  1.66984985],
       [ 1.07645524,  2.30237842]])
# 随机整数,参数为(low, high, size)
np.random.randint(0, 4, 10)
array([0, 3, 2, 2, 2, 3, 1, 0, 1, 3])
# 固定随机数种子,有助于复现,固定随机数种子为1后,下一个 np.random.random() 必定为 0.417022004702574
np.random.seed(1)
np.random.random()
0.417022004702574