首页 > 解决方案 > 如何在 Python 中将行转换为列

问题描述

我有如下数据。

[ 1.  2.  3.  4.  5.  6.  7.  8.  9. 10. 11. 12. 13. 14. 15. 16. 17. 18.
 19. 20. 21. 22. 23. 24. 25. 26. 27. 28. 29. 30. 31. 32. 33. 34.] <br>

(34,)

但我想做这个(1,34)。
当我使用 np.reshape 时

np.reshape(data, (1,34))

我得到如下数据。

[[ 1.  2.  3.  4.  5.  6.  7.  8.  9. 10. 11. 12. 13. 14. 15. 16. 17. 18.
  19. 20. 21. 22. 23. 24. 25. 26. 27. 28. 29. 30. 31. 32. 33. 34.]]

(1, 34)

但这对我来说看起来很奇怪。你能推荐一个解决方案吗?
%np.transpose 不会改变任何东西。

标签: pythonnumpy

解决方案


所以使用 numpy 的 reshape(),它会改变数组的维度。这些维度必须是元素总和的因子。在您的情况下,您的数组有 34 个值,因此您只有 4 个选项。您的维度要么是 (1,34),要么是 (2,17),如下所示:

    array([[ 1,  2,  3,  4,  5,  6,  7,  8,  9, 10, 11, 12, 13, 14, 15, 16,
        17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32,
        33, 34]])

array([[ 1,  2,  3,  4,  5,  6,  7,  8,  9, 10, 11, 12, 13, 14, 15, 16,
        17],
       [18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33,
        34]])

或者您可以使用 (34, 1) 执行上述相反操作:

array([[ 1],
       [ 2],
       [ 3],
       [ 4],
       [ 5],
         .
         .
       [34]

或者最后 (17, 2) 看起来像:

array([[ 1,  2],
       [ 3,  4],
       [ 5,  6],
       [ 7,  8],
       [ 9, 10],
       [11, 12],
       [13, 14],
       [15, 16],
       [17, 18],
       [19, 20],
       [21, 22],
       [23, 24],
       [25, 26],
       [27, 28],
       [29, 30],
       [31, 32],
       [33, 34]])

这是因为 34 只分解为 2 * 17 或 17 * 2。


推荐阅读