[英]Matrix multiply two 1-D numpy arrays
我有兩個numpy的一維數組: a和b 。
a的形狀為(10,)。 b的形狀為(16,)。
我希望做一個具有形狀(10,1)和B具有形狀(16,1),以矩陣乘法它們像這樣:np.matmul(A,BT)。
如果成功,這將導致(10,16)二維數組。 有誰知道如何做到這一點?
IIUC:
In [47]: a = np.arange(10)
In [48]: b = np.arange(16)
In [49]: a[:,None] * b
Out[49]:
array([[ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0],
[ 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15],
[ 0, 2, 4, 6, 8, 10, 12, 14, 16, 18, 20, 22, 24, 26, 28, 30],
[ 0, 3, 6, 9, 12, 15, 18, 21, 24, 27, 30, 33, 36, 39, 42, 45],
[ 0, 4, 8, 12, 16, 20, 24, 28, 32, 36, 40, 44, 48, 52, 56, 60],
[ 0, 5, 10, 15, 20, 25, 30, 35, 40, 45, 50, 55, 60, 65, 70, 75],
[ 0, 6, 12, 18, 24, 30, 36, 42, 48, 54, 60, 66, 72, 78, 84, 90],
[ 0, 7, 14, 21, 28, 35, 42, 49, 56, 63, 70, 77, 84, 91, 98, 105],
[ 0, 8, 16, 24, 32, 40, 48, 56, 64, 72, 80, 88, 96, 104, 112, 120],
[ 0, 9, 18, 27, 36, 45, 54, 63, 72, 81, 90, 99, 108, 117, 126, 135]])
您需要顯式使用reshape
。 bT
和b.transpose()
對一維數組沒有任何意義:
a = np.arange(10)
b = np.arange(16)
c = a.reshape(10, 1) @ b.reshape(1, 16)
如預期的那樣(10, 16)
c.shape
現在將是(10, 16)
c.shape
(10, 16)
。
您可以使用重塑方法。
import numpy as np
a = np.array([1, 2, 3, 4, 5, 6, 7, 8, 9, 10]).reshape((10, 1))
b = np.array([1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16]).reshape((16, 1))
c = np.matmul(a, b.T)
print(c.shape)
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.