6、Numpy形状操纵

发布时间:2024年01月19日

目录

1. 使用?reshape?改变形状

2. 使用?resize?改变大小和形状

3. 使用?ravel?或?flatten?展平数组

4. 使用?-1?推断尺寸

5. 使用?newaxis?增加维度

6. 使用?squeeze?移除单维度条目


1. 使用?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]]

2. 使用?resize?改变大小和形状

resize 方法类似于 reshape,但它可以改变数组的大小。如果新大小大于原始大小,resize 会重复数组中的数据以填充新数组。

# 创建一个一维数组 
arr = np.array([1, 2, 3]) 

# 使用 resize 改变大小和形状 
np.resize(arr, (2, 3))

这将创建一个新的 2x3 数组,其中原始数组的元素被复制以填充新数组。

3. 使用?ravel?或?flatten?展平数组

ravelflatten 方法将多维数组转换为一维数组。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]

?

4. 使用?-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]]

5. 使用?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]]

6. 使用?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]

文章来源:https://blog.csdn.net/sinat_34461199/article/details/135707031
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。