NumPy reshape() 函数



NumPy 的reshape()函数用于更改数组的形状而不改变其数据。它返回一个具有指定维度的新视图或数组,前提是元素总数保持不变。

此函数有两个主要参数:一个是要重塑的数组,另一个是指定新形状的元组。如果新形状与元素总数不兼容,则会引发“ValueError”。

NumPy 的reshape()函数对于将数据转换为适合不同处理要求的格式非常有用,例如在行主序和列主序格式之间转换,或为机器学习模型准备数据。

语法

NumPy reshape()函数的语法如下:

numpy.reshape(arr, newshape, order='C')

参数

以下是 NumPy reshape() 函数的参数:

  • arr: 要重塑的输入数组。
  • newshape: 此参数可以是整数或整数元组。新形状应与原始形状兼容。
  • order: 此参数定义读写顺序。如果为 'C' 则为行主序,'F' 则为列主序。

返回值

reshape() 函数返回一个具有相同数据但不同形状的新数组。

示例 1

以下是 NumPy reshape() 函数的基本示例。在这个例子中,我们将一个包含 8 个元素的一维数组重塑为一个 2x4 的二维数组:

import numpy as np

# Create a 1D array with 8 elements
a = np.arange(8)
print('The original array:')
print(a)
print('\n')

# Reshape the array to a 2D array with shape (4, 2)
b = a.reshape(4, 2)
print('The modified array:')
print(b)

输出

The original array:
[0 1 2 3 4 5 6 7]


The modified array:
[[0 1]
 [2 3]
 [4 5]
 [6 7]]

示例 2

此示例使用 -1 自动计算将 2x3 数组重塑为 3x2 数组的适当维度:

import numpy as np

# Original array
a = np.array([[1, 2, 3], [4, 5, 6]])
# Reshaping the array to 3x2 using -1 to infer one of the dimensions
reshaped_array = np.reshape(a, (3, -1))

print("Original array:")
print(a)
print("Reshaped array (3x2):")
print(reshaped_array)

输出

Original array:
[[1 2 3]
 [4 5 6]]
Reshaped array (3x2):
[[1 2]
 [3 4]
 [5 6]]

示例 3

众所周知,我们可以根据需要分配 order 参数,因此,在下面的示例中,我们通过将 order 定义为 'F'(即 Fortran 式列主序)来将 2x3 数组重塑为 3x2 数组:

import numpy as np

# Original array
a = np.array([[1, 2, 3], [4, 5, 6]])
# Reshaping the array to 3x2 in Fortran-like order
reshaped_array = np.reshape(a, (3, 2), order='F')

print("Original array:")
print(a)
print("Reshaped array (3x2) in Fortran-like order:")
print(reshaped_array)

输出

Original array:
[[1 2 3]
 [4 5 6]]
Reshaped array (3x2) in Fortran-like order:
[[1 5]
 [4 3]
 [2 6]]
numpy_array_manipulation.htm
广告