数组 `reshape` 与 `transpose`

原由

numpy 中现在有个 array 大小为 $2\text{x}3$ 的数组

array([[0, 1],
       [2, 3],
       [4, 5]])

想将这个数组进行变换为 $2\text{x}3$ 的数组

>>> import numpy as np
>>> a = np.arange(6).reshape((2, 3))
>>> a
array([[0, 1, 2],
       [3, 4, 5]])
>>> a.reshape((3, 2))
array([[0, 1],
       [2, 3],
       [4, 5]])
>>>

然而,这并不是想要的。

咦~似乎跟预想的有些出入。 想象中的数组应该会变成这样子。

array([[0, 3],
       [1, 4],
       [2, 5]])

numpy.reshape 的机制

numpyreshape 通过索引依次排序形成 shape

有关索引

numpy 里面对索引进行了标注,C 语言的索引风格,FFortran 语言的索引风格

正确的结果 numpy.transpose

这里确切的说,这里想要的不是 reshape 而是 transpose 轴之间的转换。

>>> a.transpose((1, 0))
>>>
array([[0, 3],
       [1, 4],
       [2, 5]])