Python:将MxN数组更改为NxM

时间:2018-10-19 16:47:52

标签: python arrays

matrix = []
n = int(input("n: "))
m = int(input("m: "))

for i in range(m):
  data = input()
  data_list = data.split()
  data_list = [int(i) for i in data_list]

  matrix.append(data_list)

我制作了一个python代码,用于将整数放入MxN数组中。 我想将其更改为 Nx(M + 1)数组

array [m] [n]更改为array [n] [m]

并将0放入 array [] [m + 1]

例如:

n : 4
m : 3

输入整数:

1 2 3 4
5 6 7 8
9 10 11 12

变成:

1 5 9 0
2 6 10 0
3 7 11 0
4 8 12 0

如何使该代码执行此操作? 我尝试过

for i in range(m):
  for j in range(n):
     matrix[i][j] = matrix[j][i]

但这是错误的方法。

2 个答案:

答案 0 :(得分:0)

matrix = [
  [ 1, 2, 3, 4 ],
  [ 5, 6, 7, 8 ],
  [ 9, 10, 11, 12 ]
]

def change(matrix):
    m = len(matrix)
    n = len(matrix[0])
    result = [[] for i in range(n)]
    for i in range(m+1):
        for j in range(n):
            if i == m:
                result[j].append(0)
            else:
                result[j].append(matrix[i][j])
    return result

changed = change(matrix)
print(changed)

答案 1 :(得分:0)

要解决您的问题,请熟悉 NumPy

import numpy as np
t1 = np.arange(1, 13).reshape(3, 4)

创建您的源表:

array([[ 1,  2,  3,  4],
       [ 5,  6,  7,  8],
       [ 9, 10, 11, 12]])

然后您应该转置它:

t2 = t1.T

给出:

array([[ 1,  5,  9],
       [ 2,  6, 10],
       [ 3,  7, 11],
       [ 4,  8, 12]])

最后:

np.c_[ t2, np.zeros(4) ]

添加4个零的列,得到最终结果:

array([[ 1.,  5.,  9.,  0.],
       [ 2.,  6., 10.,  0.],
       [ 3.,  7., 11.,  0.],
       [ 4.,  8., 12.,  0.]])