首页 > 解决方案 > 如何将一维 numpy 数组重塑为具有行值的二维 numpy 数组

问题描述

假设我有一个数组:

x = np.array([1, 1, 1, 2, 2, 2, 3, 3, 3])

我想将其转换为二维数组,但后续值按行输入:

array([[1, 2, 3],
       [1, 2, 3],
       [1, 2, 3]])

我认为既然x.reshape(-1, 3)按列填充值,那么x.reshape(3, -1)会给我预期的输出,但事实并非如此。我显然可以这样做x.reshape(3, -1).T,但我很想了解为什么reshape无论参数顺序如何都会给我相同的结果,以及使用一种方法来做到这一点的正确方法是什么。

标签: pythonarraysnumpy

解决方案


您可以在 reshape to 'F'('Fortran') 中使用 order 参数:

>>> x = np.array([1, 1, 1, 2, 2, 2, 3, 3, 3])
>>> x.reshape(3,-1, order='F')
array([[1, 2, 3],
       [1, 2, 3],
       [1, 2, 3]])

查看:numpy.reshape


推荐阅读