目录
reshape
?改变形状对于任何 NumPy 数组,你可以使用 reshape
方法来改变其形状,而不改变数据本身。
import numpy as np
# 创建一个一维数组
arr = np.arange(6)
print("Original array:", arr)
# 使用 reshape 改变数组形状
reshaped_arr = arr.reshape((2, 3))
print("Reshaped array:\n", reshaped_arr)
上述代码将一个包含六个元素的一维数组转换成了一个 2x3 的二维数组:
Original array: [0 1 2 3 4 5]
Reshaped array:
[[0 1 2]
[3 4 5]]
resize
?改变大小和形状resize
方法类似于 reshape
,但它可以改变数组的大小。如果新大小大于原始大小,resize
会重复数组中的数据以填充新数组。
# 创建一个一维数组
arr = np.array([1, 2, 3])
# 使用 resize 改变大小和形状
np.resize(arr, (2, 3))
这将创建一个新的 2x3 数组,其中原始数组的元素被复制以填充新数组。
ravel
?或?flatten
?展平数组ravel
和 flatten
方法将多维数组转换为一维数组。flatten
总是返回一个新的数组,而 ravel
返回一个数组视图,如果可能的话。
# 创建一个二维数组
arr = np.array([[1, 2, 3], [4, 5, 6]])
# 使用 ravel 展平数组
flat_arr = arr.ravel()
print("Flattened array with ravel:", flat_arr)
# 使用 flatten 展平数组
flat_arr2 = arr.flatten()
print("Flattened array with flatten:", flat_arr2)
结果:
Flattened array with ravel: [1 2 3 4 5 6]
Flattened array with flatten: [1 2 3 4 5 6]
?
-1
?推断尺寸在重塑数组时,你可以在一个维度上使用 -1
,让 NumPy 自动计算这个维度的大小。
# 创建一个一维数组
arr = np.arange(12)
# 使用 reshape 时在一个维度上使用 -1
reshaped_arr = arr.reshape((3, -1))
print("Reshaped array with -1:\n", reshaped_arr)
上述代码会创建一个 3x4 的二维数组,因为 -1
会被解释为 4
来匹配原始数组的总大小。结果:
Reshaped array with -1:
[[ 0 1 2 3]
[ 4 5 6 7]
[ 8 9 10 11]]
newaxis
?增加维度使用 np.newaxis
可以在数组中增加一个新的轴,也就是增加一个维度。
# 创建一个一维数组
arr = np.array([1, 2, 3])
# 使用 newaxis 增加一个新的维度
column_arr = arr[:, np.newaxis]
print("Column array with newaxis:\n", column_arr)
# 或者,将其变为行向量
row_arr = arr[np.newaxis, :]
print("Row array with newaxis:\n", row_arr)
这种技术常用于将一维数组转换为列向量或行向量,以符合某些算法的输入要求。结果:
Column array with newaxis:
[[1]
[2]
[3]]
Row array with newaxis:
[[1 2 3]]
squeeze
?移除单维度条目squeeze
方法用于从数组的形状中去除单维度的条目,即那些大小为 1 的维度。
# 创建一个具有单一维度的数组
arr = np.array([[[1], [2], [3]]])
print("Original array shape:", arr.shape)
# 使用 squeeze 移除单维度条目
squeezed_arr = arr.squeeze()
print("Squeezed array shape:", squeezed_arr.shape)
print("Squeezed array:", squeezed_arr)
在上述代码中,我们将一个 1x3x1 的三维数组压缩成了一个 3x1 的二维数组。结果:
Original array shape: (1, 3, 1)
Squeezed array shape: (3,)
Squeezed array: [1 2 3]