[英]Efficiently replace vstack + concatenate applied to numpy arrays
下面塊中的最后兩行在我的實際代碼中重復了數百萬次:
import numpy as np
# Data with proper shape
N1, N2 = 3, 5
aa = np.random.uniform(0., 1., (23, 2000))
a1 = np.random.uniform(0., 1., N1)
a2 = np.random.uniform(0., 1., N2)
# Replace these two lines as efficiently as possible
a3 = np.vstack(np.concatenate((a1, a2, a1, a2)))
aa[:(N1 + N2 + N1 + N2)] = aa[:(N1 + N2 + N1 + N2)] + a3
結合np.vstack()
和np.concatenate()
然后將結果添加到數組的一部分似乎不是最佳的。
有沒有更好的,即:更有效的方法來做到這一點?
您可以使用np.concatenate()
和一個簡單的廣播:
In [18]: np.concatenate((a1, a2, a1, a2))[:,None]
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.