在矩阵中重复每行n次,并在每个部分旁边添加1 * n列

时间:2019-04-18 14:22:14

标签: python python-3.x

我想重复矩阵的每一行并在其旁边添加另一列。

想象这是我的矩阵

A = [[11, 12], [13, 14], [15, 16], [17, 18]]

并且我希望每行重复2次,那么结果将是

B = [[1, 11, 12], [2, 11, 12], [1, 13, 14], [2, 13, 14], [1, 15, 16], [2, 15, 16], [1, 17, 18], [2, 17, 18]]

我已经尝试过以下代码

k = 2
B = [A] * k

这使我在完整代码中出现内存错误

我不知道如何使用熊猫,我正在使用numpy。 有什么方法可以有效地使用numpy而不遇到内存错误,对于我来说,

并得到正确的答复?

P.S .:我没有添加代码,因为我正在使用庞大的数据集,而这只是整个代码的一小部分!

2 个答案:

答案 0 :(得分:2)

您应该

k = 2
B = A * k 

代替

k = 2
B = [A] * k

要添加新的索引列,您可以这样做

for i, sub_list in B:
    sub_list.insert(i, i+1) # starting from index 1 instead of 0

由于列表是可变的,因此无需重新分配B。

答案 1 :(得分:0)

#Here is my reply which solved memory problem too.
#I guess memory problem was due to exceeding array limit!!!
#I do not know HOW but below code was practically correct. 
A = np.repeat(A, k, axis=0)
AB = [[1], [2]]
AB = np.reshape(AB, (-1,1))
AB = np.tile(AB,((len(A)//k),1))
B = np.hstack((AB, A))