在不更改数组数据的情况下,改变数组的形状,返回一个新的数组。例如将一个二维数组转换成一个三维数组。
numpy.reshape(a, newshape, order='C')
参数 | 描述 |
---|---|
a : 类数组 | 要改变形状的数组对象 |
newshape : 整型或整型元组 | 新形状需与原始形状兼容,若为整型,则返回该长度的一维数组;尺寸可为 -1,将基于兼容自动计算尺寸长度 |
order : {‘C’, ‘F’, ‘A’}, optional | 指定顺序将原数组中的元素逐个复制到新数组中。“C”:按行读取/存储;“F”:按列读取/存储 |
a = np.arange(6).reshape((3, 2))
print("a:", a)
>>> a: ([[0 1]
[2 3]
[4 5]])
其过程为:按照给定的索引顺序遍历数组,再使用相同的索引顺序将元素放置到新数组中。
a = np.arange(6).reshape((2, 3))
print("a:", a)
>>> a: [[0 1 2]
[3 4 5]]
b = np.reshape(a, (3, 2))
print("b:", b)
>>> b: [[0 1]
[2 3]
[4 5]]
c = np.reshape(a, (3, 2), order="F")
print("c:", c)
>>> c: [[0 4]
[3 2]
[1 5]]
参数 order 的默认值为 “C”,即按行读取/存储。
a = np.array([[1,2,3], [4,5,6]])
print("a:", a)
>>> a: [[1 2 3]
[4 5 6]]
b = np.reshape(a, 6)
print("b:", b)
>>> b: [1 2 3 4 5 6]
c = np.reshape(a, -1)
print("c:", c)
>>> c: [1 2 3 4 5 6]
d = np.reshape(a, (3, -1))
print("d:", d)
d: [[1 2]
[3 4]
[5 6]]