簡體   English   中英

有效替換應用於 numpy 數組的 vstack + concatenate

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM