我有一個矩陣M
與維度(m, n)
,我需要添加新的列從矩陣L
與維度(m, l)
。所以基本上我會以矩陣(m, n + l)
結束。如何將追加到一個numpy數組而不重新分配結果到一個新的變量?
在做這個沒問題,我可以使用:
以下列方式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
並刪除舊的矩陣。但我不知道如何擺脫重新分配的部分。
一個想法是,事先創建一個空矩陣,然後填充正確的列應該是更快,但問題是,我不知道我應該創建它的尺寸(沒有辦法預測的數量列在我的矩陣)。
那麼我該如何提高性能呢?
在程序中重複添加迭代是否重要?如果不是,你可以收集所有的矩陣,然後一次加入所有的矩陣。 – cel
追加,vstack等全部使用連接 – hpaulj