簡體   English   中英

如何將大小為 N 的 numpy 列數組乘以 python 中大小為 N 的行數組以獲得 NXN 矩陣?

[英]how to multiply a numpy column array of size N to row array of size N in python to get N X N matrix?

我想使用 python 將[1,2] * [1,2].T = [[1,2],[2,4]]相乘。 numpy 或任何其他包中是否有任何模塊 function 可用?

我嘗試使用 numpy.matmul、numpy.dot 和 numpy.multiplication。 那些沒有太大幫助

乘法應該是相反的:

>>> np.array([[1,2]]).T @ np.array([[1,2]])
array([[1, 2],
       [2, 4]])

如果您的 arrays 是向量,則需要擴展尺寸:

>>> arr = np.array([1, 2])
>>> arr[:, None] @ arr.T[None, :]   # Or, arr[None, :].T @ arr[None, :]
array([[1, 2],
       [2, 4]])

這相當於:

>>> np.expand_dims(arr, axis=1) @ np.expand_dims(arr, axis=0)
array([[1, 2],
       [2, 4]])

這是必需的,因為arr的形狀(2,)是一1D數組。

要獲得您想要的結果,您需要將形狀(2,1)的數組與(1,2)相乘,使得結果為(2, 2)

>>> np.expand_dims(a, axis=1) # That is adding a dimension in columns
>>> np.expand_dims(a, axis=1).shape
(2, 1)

您的版本不起作用,因為一1-D數組的transpose與數組本身相同。

>>> arr
array([1, 2])
>>> arr.T
array([1, 2])

相反,如果您從一開始就有一個2D數組,那么轉置就可以了:

>>> arr = np.array([[1, 2]])
>>> arr
array([[1, 2]])
>>> arr.T
array([[1],
       [2]])

暫無
暫無

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

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