簡體   English   中英

如何將 3D 陣列的內積轉換為二維陣列?

[英]How to get inner product of 3D array to 2D array?

我有兩個 Numpy 陣列

b=np.array([[1, 2, 3], [4, 5, 6]])
a=np.array([[[1, 2,1], [3, 4,1],[4,5,6],[6,7,8]], [[5, 6,1], [7, 8,1],[4,5,6],[6,7,8]]])

a.shape,b.shape
((2, 4, 3), (2, 3))

我想計算這些數組的點積。 我嘗試了以下代碼:

s=np.flip(np.dot(a,b).transpose((0,2,1)),1)

但它會引發以下錯誤:

---------------------------------------------------------------------------
ValueError                                Traceback (most recent call last)
<ipython-input-140-6ada0906cbfc> in <module>
----> 1 s=np.flip(np.dot(a,b).transpose((0,2,1)),1)

<__array_function__ internals> in dot(*args, **kwargs)

ValueError: shapes (2,4,3) and (2,3) not aligned: 3 (dim 2) != 2 (dim 0)

我希望我的結果數組的形狀應該是 -(2,4)

我將如何計算這個? 請建議一些其他方法來做到這一點。

a的形狀應該是(*, 3, 2)因為b的形狀是(2, 3)

a_ · b = │ a11 a12 | * | b11 b12 b13 |
         │ a21 a22 |   | b21 b22 b23 |
         │ a31 a32 | 

其中a_是 a 的a元素。

使用以下a

a=np.array([[
    [1, 2], [1, 3], [4, 1]
], [
    [4, 5] ,[6, 6], [7, 8]
], [
    [5, 6], [1, 7], [8, 1]
], [
    [4, 5], [6, 6] ,[7, 8]
]])

我沒有錯誤。 所以試試:

np.dot(a.reshape(4, 3, 2), b)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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