NumPy squeeze() 函数



Numpy 的squeeze()函数用于从数组的形状中删除一维条目。

此函数用于消除大小为 1 的维度,这可以简化数组操作。例如,如果我们有一个形状为 (1, 3, 1, 5) 的数组,通过应用squeeze() 将将其转换为形状为 (3, 5) 的数组,方法是删除单例维度。

此函数采用可选的axis参数来指定要删除的维度,但如果未提供,则会删除所有单例维度。

结果是一个具有较少维度但数据相同的新数组。

语法

Numpy squeeze()函数的语法如下:

numpy.squeeze(a, axis=None)

参数

以下是 Numpy squeeze()函数的参数:

  • a(array_like): 这是输入数据,应为数组或类数组对象。
  • axis(None 或 int 或 int 元组,可选): 此参数选择形状中单维条目的子集。如果指定了轴,则只会压缩该轴或这些轴。如果未指定轴,则会删除所有单维条目。如果指定的轴的大小不为 1,则会引发错误。

返回值

此函数返回输入数组,但删除了所有或一部分大小为 1 的维度。这不会修改原始数组,而是返回一个新数组。

示例 2

以下是使用 Numpy squeeze()函数的示例。在此示例中,形状为 (1, 3, 1) 的数组 'a' 被压缩以删除所有单维条目,从而得到形状为 (3,) 的数组:

import numpy as np

# Original array with shape (1, 3, 1)
a = np.array([[[1], [2], [3]]])
print("Original array shape:", a.shape)

# Squeezed array
squeezed_a = np.squeeze(a)
print("Squeezed array shape:", squeezed_a.shape)
print("Squeezed array:", squeezed_a)

输出

Original array shape: (1, 3, 1)
Squeezed array shape: (3,)
Squeezed array: [1 2 3]

示例 2

在此示例中,我们尝试压缩一个非单维轴,即轴 1,这会导致 ValueError,因为轴 1 的大小为 3:

import numpy as np

# Original array with shape (1, 3, 1)
a = np.array([[[1], [2], [3]]])
print("Original array shape:", a.shape)

try:
    # Attempting to squeeze a non-single-dimensional axis
    squeezed_a = np.squeeze(a, axis=1)
except ValueError as e:
    print("Error:", e)

输出

Original array shape: (1, 3, 1)
Error: cannot select an axis to squeeze out which has size not equal to one

示例 3

以下示例展示了如何使用numpy.squeeze()从数组的形状中删除一维条目:

import numpy as np

# Creating a 3D array with shape (1, 3, 3)
x = np.arange(9).reshape(1, 3, 3)

print('Array X:')
print(x)
print('\n')

# Removing single-dimensional entries from the shape of x
y = np.squeeze(x)

print('Array Y:')
print(y)
print('\n')

# Printing the shapes of the arrays
print('The shapes of X and Y array:')
print(x.shape, y.shape)

输出

Array X:
[[[0 1 2]
  [3 4 5]
  [6 7 8]]]


Array Y:
[[0 1 2]
 [3 4 5]
 [6 7 8]]


The shapes of X and Y array:
(1, 3, 3) (3, 3)
numpy_array_manipulation.htm
广告