1. 基础构造
适用于小规模数组或复制已有数据
# 基础创建
arr = np.array([1, 2, 3])
print(arr)
[1 2 3]# copy(深拷贝)
arr_copy = arr.copy()
print(arr_copy)
arr_copy[0] = 0
print(arr_copy)
print(arr)
[1 2 3]
[0 2 3]
[1 2 3]2. 预定义形状填充
用于快速初始化固定形状的数组(如全0占位,全1初始化)
# 预定义形状
# 全 0
arr = np.zeros((2, 3))
# 元素类型默认为 float64
print(arr)
# 创建时指定元素类型
arr = np.zeros((2, 3), dtype=int)
print(arr)
[[0. 0. 0.]
[0. 0. 0.]]
[[0 0 0]
[0 0 0]]# 全 1
arr = np.ones((2, 3))
# 元素类型默认为 float64
print(arr)
[[1. 1. 1.]
[1. 1. 1.]]# 未初始化(每次初始化的结果不一致)
arr = np.empty((2, 3))
print(arr)
[[1. 1. 1.]
[1. 1. 1.]]# 指定初始化值全填充
arr =np.full((2, 3), 1)
print(arr)
[[1 1 1]
[1 1 1]]# _like 表示 shape、dtype和指定的数组一样
arr_like = np.zeros_like(arr)
print(arr_like)
[[0 0 0]
[0 0 0]]3. 基于数值范围生成
生成数值序列,常用于模拟时间序列、坐标网格等
# 等差数列
# 参数:起始位置,结束位置,步长
arr = np.arange(0, 5, 1)
print(arr)
[0 1 2 3 4]# 等间隔数列
# 参数:起始位置,结束位置,要取几份(均分几份)
arr = np.linspace(1, 5, 3)
print(arr)
# 知道长度和要取几份,通过arange也能实现
arr = np.arange(1, 100, 25)
print(arr)
arr = np.arange(1, 101, 25)
print(arr)
[1. 3. 5.]
[ 1 26 51 76]
[ 1 26 51 76]# 对数间隔数列
# 参数:起始位置,结束位置,要取几份(均分几份),指数
arr = np.logspace(0, 4, 3, base=2)
print(arr)
[ 1. 4. 16.]4. 矩阵
| 名称 | 维度 | 示例 | 备注 |
|---|---|---|---|
| 标量 | 0维 | 1, 2 | 单个数字,无行列 |
| 向量 | 1维 | [1, 2, 3] | 只有行或列 |
| 矩阵 | 2维 | [[1, 2, 3], [4, 5, 6]] | 严格的行列结构 |
| 张量 | >= 3维 | [[[1, 2], [3, 4]]] | 高阶数组(如RGB图像) |
矩阵是由 行(row) 和 列(column) 排列成的矩形数组

形状(shape):2行3列,记作 2x3 矩阵
元素(entry):矩阵中的每个数字称作元素
特殊矩阵

# 单位矩阵
arr = np.eye(3, 5, dtype=int)
print(arr)
[[1 0 0 0 0]
[0 1 0 0 0]
[0 0 1 0 0]]# 对角矩阵
arr = np.diag([-1, 1, 2, 3])
print(arr)
[[-1 0 0 0]
[ 0 1 0 0]
[ 0 0 2 0]
[ 0 0 0 3]]5. 随机数组生成
模拟实验数据、初始化神经网络权重等
# 随机数组
# 0 - 1 之间的
arr = np.random.rand(3, 3)
print(arr)
[[0.49269745 0.28805571 0.0111438 ]
[0.43128953 0.72709 0.5444694 ]
[0.93261996 0.32217166 0.72474585]]# 指定范围区间
# 随机浮点数
arr = np.random.uniform(1, 3, (3, 3))
print(arr)
[[2.70492755 1.636252 1.18072158]
[1.38557557 2.13813528 2.11942667]
[2.18956104 2.72948314 1.8949814 ]]# 随机整数
arr = np.random.randint(1, 10, (3, 3))
print(arr)
[[4 9 9]
[8 5 4]
[2 6 5]]# 随机数列(正态分布 -3 ~ 3之间)
# 两边的概率小,中间的概率大
arr = np.random.randn(3, 3)
print(arr)
[[ 0.89822946 1.21094463 -1.23360184]
[ 0.26999662 0.97035489 -1.95975342]
[-0.54847444 0.24917721 0.13710756]]# 设置随机种子
# 作用:a、b两个同事在各自电脑上做测试时,需要一个相同的数组,通过种子来做关联
np.random.seed(20)
arr = np.random.randint(1, 10, (3, 3))
print(arr)
[[4 5 7]
[8 3 1]
[7 9 6]]6. 高级构造方法
处理非结构化数据(文件、字符串等)或通过函数生成复杂数组
评论 (0)