我想重复矩阵的每一行并在其旁边添加另一列。
想象这是我的矩阵
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 .:我没有添加代码,因为我正在使用庞大的数据集,而这只是整个代码的一小部分!
答案 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))