📜  Numpy 中 reshape() 和 resize() 方法的区别(1)

📅  最后修改于: 2023-12-03 15:03:18.805000             🧑  作者: Mango

Numpy 中 reshape() 和 resize() 方法的区别

Numpy 是一个用于处理数组和大型矩阵的Python库。在Numpy中,reshape()和resize()是两种常用的方法,用于调整数组的形状。两者虽然都可以改变数组的形状,但在功能和使用上有一些区别。

1. reshape()

reshape() 方法用于改变数组的形状,返回重新排列的数组副本,原始数组保持不变。它的语法如下:

numpy.reshape(arr, newshape, order='C')
  • arr:要修改形状的数组
  • newshape:新形状的元组或整数
  • order:可选参数,指定重新排列元素的顺序,默认为'C'表示按行排列

reshape() 方法主要有如下几个特点:

  • 修改形状后,返回的是原数组的一个视图,不会改变原始数组的数据。
  • 修改形状的维度必须与原数组的数据个数一致,否则会抛出 ValueError 异常。
  • 如果 newshape 中的一个维度为-1,表示该维度的大小由其他维度自动计算而来。
import numpy as np

arr = np.array([1, 2, 3, 4, 5, 6])
reshaped_arr = arr.reshape(2, 3)

print(reshaped_arr)
# [[1 2 3]
#  [4 5 6]]
2. resize()

resize() 方法也用于调整数组的形状,但与 reshape() 不同,它会直接修改原始数组的形状。它的语法如下:

numpy.resize(arr, newshape)
  • arr:要修改形状的数组
  • newshape:新形状的元组或整数

resize() 方法主要有如下几个特点:

  • 如果新形状元素个数大于原始数组的元素个数,会重复原始数组的元素来填充新数组。
  • 如果新形状元素个数小于原始数组的元素个数,会截取原始数组的前部分元素来填充新数组。
  • 修改形状后,原始数组的数据会被修改,无视是否存储到新的变量中。
import numpy as np

arr = np.array([1, 2, 3, 4, 5, 6])
resized_arr = np.resize(arr, (2, 4))

print(resized_arr)
# [[1 2 3 4]
#  [5 6 1 2]]
3. 区别总结
  • reshape() 返回原数组的一个视图,并不修改原数组的数据,而 resize() 直接修改原数组的数据。
  • reshape() 方法的新形状维度必须与原数组的数据个数一致,而 resize() 方法可以根据新形状的大小重复或截取原数组的元素来填充新数组。
  • reshape() 方法的新形状维度可以用-1指定,表示该维度的大小由其他维度自动计算而来,而 resize() 方法没有类似的功能。

以上就是 Numpy 中 reshape()resize() 方法的区别。在实际应用中,根据需要选择合适的方法来调整数组的形状。