numpy.squeeze
numpy.squeeze(a, axis=None) [source]
从数组shape中删除一维条目。
参数 : | a :array_like 输入数据。 axis : 或 int类型的tuple, 可选 1.7.0版中的新功能。 选择形状中一维条目的子集。 如果选择的形状输入 大于一个的轴, 则会引发错误。 |
返回值 : | squeezed :ndarray 输入数组, 但删除了长度为1的全部或部分维度。 可能始终是其本身或a的视图。 请注意,如果所有轴都受到 则结果为 |
Raises : | ValueError 如果axis不为 并且被压缩的轴的长度不为 |
例子
1)去掉所有维度为 1 的轴
import numpy as np
# 创建一个具有维度 (1, 3, 1) 的数组
arr = np.array([[[1]], [[2]], [[3]]])
print("原始数组形状:", arr.shape) # 输出: (3, 1, 1)
# 使用 squeeze 去掉维度为 1 的轴
squeezed_arr = np.squeeze(arr)
print("去掉维度后的数组形状:", squeezed_arr.shape) # 输出: (3,)
print(squeezed_arr) # 输出: [1 2 3]
2)指定轴去掉
import numpy as np
# 创建一个具有维度 (1, 3, 1) 的数组
arr = np.array([[[1]], [[2]], [[3]]])
print("原始数组形状:", arr.shape) # 输出: (3, 1, 1)
# 使用 squeeze 指定轴去掉
squeezed_arr = np.squeeze(arr, axis=1)
print("去掉指定维度后的数组形状:", squeezed_arr.shape) # 输出: (3, 1)
print(squeezed_arr) # 输出: [[1]
# [2]
# [3]]
3)尝试去掉不存在的轴
import numpy as np
# 创建一个具有维度 (3, 2) 的数组
arr = np.array([[1, 2], [3, 4], [5, 6]])
print("原始数组形状:", arr.shape) # 输出: (3, 2)
# 尝试去掉一个不存在的轴
squeezed_arr = np.squeeze(arr, axis=0) # 轴 0 不是 1,保持不变
print("去掉不存在维度后的数组形状:", squeezed_arr.shape) # 输出: (3, 2)
print(squeezed_arr) # 输出: [[1 2]
# [3 4]
# [5 6]]
4)处理其他形状的数组
import numpy as np
# 创建一个具有维度 (1, 1) 的数组
x = np.array([[1234]])
print("原始数组形状:", x.shape) # 输出: (1, 1)
# 去掉所有维度为 1 的轴
squeezed_x = np.squeeze(x)
print("去掉维度后的数组:", squeezed_x) # 输出: 1234
print("去掉维度后的数组形状:", squeezed_x.shape) # 输出: ()
# 访问单个元素
element = np.squeeze(x)[()]
print("单个元素:", element) # 输出: 1234