假設(shè) numpy 向量a和矩陣b如下:import numpy as npa = np.array([1,2])b = np.array([[3,4],[5,6]])我想將向量a連接到矩陣 b 的每一行。預(yù)期輸出如下:output=np.array([[1,2,3,4],[1,2,5,6]])我有一個工作代碼如下:output=np.array([np.concatenate((a,row)) for row in b] )有沒有更快的 numpy 函數(shù)來執(zhí)行這樣的任務(wù)?任何建議表示贊賞!
4 回答

溫溫醬
TA貢獻(xiàn)1752條經(jīng)驗(yàn) 獲得超4個贊
output = np.zeros((2,4), int) output[:, :2] = a # broadcasts (2,) to (1,2) to (2,2) output[:, 2:] = b

繁花如伊
TA貢獻(xiàn)2012條經(jīng)驗(yàn) 獲得超12個贊
你可以廣播到witha
的形狀,然后用 水平堆疊它們:b
np.broadcast_to
np.hstack
np.hstack([np.broadcast_to(a, b.shape), b])
array([[1, 2, 3, 4],
? ? ? ?[1, 2, 5, 6]])

汪汪一只貓
TA貢獻(xiàn)1898條經(jīng)驗(yàn) 獲得超8個贊
好吧,我對你的解決方案與其他解決方案進(jìn)行了“快速”比較。由于它們都能夠達(dá)到相同的結(jié)果,因此重要的是看看哪一個表現(xiàn)更好。

明月笑刀無情
TA貢獻(xiàn)1828條經(jīng)驗(yàn) 獲得超4個贊
您可以使用reshape
和concatenate
:
np.concatenate((np.concatenate((a.reshape(1,2), a.reshape(1,2))), b), axis=1)
或者也許更好地使用tile
:
np.concatenate((np.tile(a.reshape(1,2), (2,1)), b), axis=1)
添加回答
舉報
0/150
提交
取消