numpy.resize
numpy.resize(a, new_shape) [source]
返回具有指定形状的新数组。
如果新数组大于原始数组,则新数组将填充a的重复副本。 请注意,此行为与a.resize(new_shape)不同,后者用零而不是重复的a填充。
参数 : | a :array_like 要调整大小的数组。 new_shape : 调整大小后的数组的形状。 |
返回值 : | reshaped_array : 新数组由旧数组中的数据组成,如有必要, 可重复进行此操作以填充所需数量的元素。 数据按照存储在内存中的顺序被重复。 |
Notes
此功能不会单独考虑轴,即它不应用interpolation/extrapolation。 它使用所需数量的元素填充返回数组,这些元素取自于它们在内存中的布局,而不考虑步幅和轴。 (这是在新形状较小的情况下。对于较大的形状,请参见上文。)因此,此功能不适用于调整图像或数据的大小,其中每个轴代表一个单独的不同实体。
例子
1)基本示例
import numpy as np
arr = np.array([1, 2, 3, 4])
new_arr = np.resize(arr, (2, 3))
print(new_arr)
2)截断数据
import numpy as np
arr = np.array([1, 2, 3, 4, 5, 6])
new_arr = np.resize(arr, (2, 2))
print(new_arr)
3)与 reshape 的区别
numpy.reshape()
不能改变元素总数,如果形状不匹配会报错。numpy.resize()
可以自由扩展或截断数据。
import numpy as np
arr = np.array([1, 2, 3, 4])
# np.reshape() 不能改变大小,报错
# new_arr = np.reshape(arr, (2, 3))
# ValueError
# np.resize() 可以扩展
new_arr = np.resize(arr, (2, 3))
print(new_arr)
4)处理多维数组
import numpy as np
arr = np.array([[1, 2], [3, 4]])
new_arr = np.resize(arr, (3, 3))
print(new_arr)