📅  最后修改于: 2023-12-03 15:37:25.272000             🧑  作者: Mango
在 NumPy 中,我们经常需要在数组的某个位置插入一个新的轴。插入新轴的机制是通过 NumPy 函数 np.newaxis
来实现。
我们可以使用 np.newaxis
来在 NumPy 数组中插入一个新轴。新轴的位置可以在任何维度上插入,下面是一个将一维数组转化为二维数组的例子:
import numpy as np
x = np.array([1, 2, 3, 4, 5])
print("原数组 x 的形状:", x.shape)
# 在第一维上插入新轴,将一维数组转化为二维数组,x.T 是原数组的转置
y = x[np.newaxis, :]
print("插入新轴之后数组 y 的形状:", y.shape)
print("数组 y 的值:\n", y)
# 在第二维上插入新轴
z = x[:, np.newaxis]
print("插入新轴之后数组 z 的形状:", z.shape)
print("数组 z 的值:\n", z)
输出:
原数组 x 的形状: (5,)
插入新轴之后数组 y 的形状: (1, 5)
数组 y 的值:
[[1 2 3 4 5]]
插入新轴之后数组 z 的形状: (5, 1)
数组 z 的值:
[[1]
[2]
[3]
[4]
[5]]
使用 np.squeeze()
函数可以压缩数组中长度为 $1$ 的维度。例如:
a = np.array([[[0], [1], [2]]])
print("原数组 a 的形状:", a.shape)
# 删除长度为 1 的一维,a.squeeze() 可以省略参数,默认删除所有长度为 1 的维度
b = np.squeeze(a)
print("压缩维度之后数组 b 的形状:", b.shape)
print("数组 b 的值:\n", b)
输出:
原数组 a 的形状: (1, 3, 1)
压缩维度之后数组 b 的形状: (3,)
数组 b 的值:
[0 1 2]
通过 np.newaxis
,我们可以轻松地在 NumPy 数组中插入新维度。如果在数组中存在长度为 $1$ 的维度,可以使用 np.squeeze()
函数来删除这些维度,从而使数组更紧凑。