是否有一种pythonic方法可以沿第一个轴连接矩阵中的列组?

时间:2021-02-09 17:05:22

标签: python numpy matrix

我正在使用一个 m x n numpy 二维数组,它包含一些整数值。在执行脚本之前尺寸是未知的,但 n(宽度)始终是偶数。类似的东西:

[[  1   2   3   4]
 [  1   2   3   4]
 [  1   2   3   4]
 [  1   2   3   4]
 [  1   2   3   4]]

我需要的是将列成对分组并沿第一个轴连接它们:

[[  1   2]
 [  1   2]
 [  1   2]
 [  1   2]
 [  1   2]
 [  3   4]
 [  3   4]
 [  3   4]
 [  3   4]
 [  3   4]]

我尝试使用 reshape 但没有输出预期的结果。我不太习惯用 Python 编程,并且能够使用循环和 if 语句来实现它,但我确信有一种更优雅的方法来做到这一点。欢迎任何帮助!

2 个答案:

答案 0 :(得分:2)

您需要在 reshape 之间转置矩阵:

# sample
a = np.stack([[1,2,3,4, 5, 6]]*2)

a.reshape(a.shape[0], -1, 2).transpose(1,0,2).reshape(-1,2)

输出:

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

答案 1 :(得分:1)

您好,使用 reshape,您可以选择从这样的列开始:

a=np.array([[1,2,3,4],[1,2,3,4],[1,2,3,4],[1,2,3,4]])
a.reshape((8,2),order='F')