![](/img/trans.png)
[英]How to do computation with a c function on a numpy array of a non square matrix of size `n` times `m` (n≠m)
[英]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.