np.reshape()
np.reshape()
:在不改变数据的条件下修改形状。
numpy.reshape(arr, newshape, order='C')
参数:
arr
:要修改形状的数组newshape
:整数或者整数数组,新的形状应当兼容原有形状order
:'C' -- 按行,'F' -- 按列,'A' -- 原顺序,'k' -- 元素在内存中的出现顺序。
示例:
import numpy as np
a = np.arange(6).reshape((3, 2))
print(a)
b = np.reshape(a, (2, 3), order='F')
print(b)
[[0 1]
[2 3]
[4 5]]
[[0 4 3]
[2 1 5]]
当维度值传 -1
时:
# 将 8 个元素的 1D 数组转换为 2x2 元素的 3D 数组
c = np.array([1, 2, 3, 4, 5, 6, 7, 8])
d = c.reshape(2, 2, -1) # 指定2行2列,第三维度用-1,会自动计算
print(d)
[[[1 2]
[3 4]]
[[5 6]
[7 8]]]
注意:reshape
生成的新数组与原数组公用一个内存。不管改变新数组还是原数组的元素,另一个数组也会改变。
d[0] = 8
print(d)
print(c)
[[[8 8]
[8 8]]
[[5 6]
[7 8]]]
[8 8 8 8 5 6 7 8]