如何在不将结果重新分配给新变量的情况下附加到numpy数组?

时间:2015-08-24 08:21:09

标签: python performance numpy

我有一个维度为M的矩阵(m, n),我需要从维度为L的矩阵(m, l)添加新列。所以基本上我最终会得到一个矩阵(m, n + l)

这样做没问题,我可以使用:

以下列方式np.command(M, L),它将返回一个新矩阵。出现问题的原因是我需要在原始矩阵中附加许多矩阵,并且事先不知道这些矩阵L的大小。

所以我最终得到了

# M is my original matrix
while:
    # find out my L matrix
    M = np.append(M, L)
    # check if I do not need to append the matrix

知道我的矩阵M大约有10万行,而我平均增加了5k列,这个过程非常慢,需要花费几个小时(我不知道确切的多长时间因为我2小时后放弃了。)

此问题显然在此append函数中(我使用vstack进行了尝试,但没有任何变化)。此外,如果我只计算矩阵L(不附加它们),我花费不到10分钟完成任务。我认为矩阵的这种重新分配是使它变慢的原因。直觉上它是有道理的,因为我不断重新创建矩阵M并删除旧矩阵。但我不知道如何摆脱重新分配的部分。

一个想法是事先创建一个空矩阵然后用正确的列填充它应该更快,但问题是我不知道我应该创建它的维度(没有办法预测列数在我的矩阵中。)

那么如何在这里提高绩效呢?

0 个答案:

没有答案