NumPy 函数

NumPy reshape() 函数用于为数组提供新形状,而不更改其数据。使用该函数的语法如下:

语法

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

参数

a必填。 指定要重塑的数组。
newshape必填。 指定整数或整数元组。新形状应与原始形状兼容。如果是整数,则结果将是该长度的一维数组。一种形状尺寸可以是-1。在本例中,该值是根据数组的长度和剩余维度推断的。
order可选。 指定顺序。使用此索引顺序读取数组的元素,并使用此索引顺序将元素放入重构后的数组中。
  • 'C' - 使用类似 C 的索引顺序读取/写入元素,最后一个轴索引变化最快,回到第一个轴索引变化最慢。
  • 'F' -使用类似 Fortran 的索引顺序读取/写入元素,第一个索引变化最快,最后一个索引变化最慢。
  • 'A' - 按照类似 Fortran 的索引顺序读取/写入元素,如果 a Fortran 在内存中是连续的,否则与 C 类似的顺序。
注意:'C' 和 'F' 选项不考虑底层数组的内存布局,仅指索引的顺序。

返回值

返回ndarray。如果可能的话,这将是一个新的视图对象;否则,它将是一个副本。请注意,无法保证返回数组的内存布局(C 或 Fortran 连续)。

示例:reshape() 数组

在下面的示例中,reshape() 函数用于使用默认参数重塑数组。

import numpy as np
arr = np.array([[1,2,3],[4,5,6]])
print("原始数组:")
print(arr)

#从 (2,3) -> (3,2) 重塑数组
print("\n重塑数组:")
print(np.reshape(arr, (3,2)))

#展平数组
print("\n展平数组:")
print(np.reshape(arr, -1)) 

上述代码的输出将是:

原始数组:
[[1 2 3]
 [4 5 6]]

重塑数组:
[[1 2]
 [3 4]
 [5 6]]

展平数组:
[1 2 3 4 5 6] 

示例: reshape() 具有类似 C 的索引排序

默认情况下,reshape 函数使用类似 C 的排序。类似 C 的排序相当于首先整理数组,然后使用类似 C 的索引顺序将元素插入到新数组中。考虑下面的示例。

import numpy as np
arr = np.array([[1,2,3],[4,5,6]])
print("原始数组:")
print(arr)

#从 (2,3) -> (3,2) 重塑数组
print("\n重塑数组:")
print(np.reshape(arr, (3,2), order='C'))

#解开初始数组
ravelarr = np.ravel(arr, order='C')
print("\n散列数组:")
print(ravelarr)

#重塑ravel数组
print("\n重塑数组 从 散列数组:")
print(np.reshape(ravelarr, (3,2), order='C')) 

上述代码的输出将是:

原始数组:
[[1 2 3]
 [4 5 6]]

重塑数组:
[[1 2]
 [3 4]
 [5 6]]

散列数组:
[1 2 3 4 5 6]

重塑数组 从 散列数组:
[[1 2]
 [3 4]
 [5 6]] 

示例:具有类似 F 索引排序的 reshape()

类似 F 的排序相当于首先整理数组,然后使用类似 F 的索引顺序将元素插入到新数组中。考虑下面的示例。

import numpy as np
arr = np.array([[1,2,3],[4,5,6]])
print("原始数组:")
print(arr)

#从 (2,3) -> (3,2) 重塑数组
print("\n重塑数组:")
print(np.reshape(arr, (3,2), order='F'))

#解开初始数组
ravelarr = np.ravel(arr, order='F')
print("\n散列数组:")
print(ravelarr)

#重塑ravel数组
print("\n重塑数组 从 散列数组:")
print(np.reshape(ravelarr, (3,2), order='F')) 

上述代码的输出将是:

原始数组:
[[1 2 3]
 [4 5 6]]

重塑数组:
[[1 5]
 [4 3]
 [2 6]]

散列数组:
[1 4 2 5 3 6]

重塑数组 从 散列数组:
[[1 5]
 [4 3]
 [2 6]]