簡體   English   中英

矩陣將兩個一維numpy數組相乘

[英]Matrix multiply two 1-D numpy arrays

我有兩個numpy的一維數組: ab

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 bTb.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.

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