python中数组的矩阵乘法

2024-06-16 14:42:17 发布

您现在位置:Python中文网/ 问答频道 /正文

我问这个有点傻,但似乎找不到答案

在Numpy中使用数组,我想把3X1数组乘以1X3数组,得到3X3数组作为结果,但是由于dot函数总是把第一个元素当作列向量,把第二个元素当作行向量,所以我不得不使用矩阵。

A=array([1,2,3])  
print "Amat=",dot(A,A)  
print "A2mat=",dot(A.transpose(),A)  
print "A3mat=",dot(A,A.transpose())  
u2=mat([ux,uy,uz])  
print "u2mat=", u2.transpose()*u2  

以及输出:

Amat= 14  
A2mat= 14  
A3mat= 14  
u2mat=  
 [[ 0.  0.  0.]  
        [ 0.  0.  0.]  
        [ 0.  0.  1.]]

Tags: 函数答案numpy元素数组向量dotprint
3条回答

一种方法是使用matrix类/类型。

import numpy as np
A = np.matrix([1,2,3])
B = A.T  #transpose of A

>>> B*A 
>>> matrix([[1, 2, 3],
    [2, 4, 6],
    [3, 6, 9]])

属于matrix类的对象与数组的行为几乎相同。实际上数组和矩阵是可以互换的。

np.outer 是一个内置的:

A = array([1,2,3])
print "outer:", np.outer( A, A )

transpose不起作用,因为A.T与for 1d数组完全相同:

print A.shape, A.T.shape, A[:,np.newaxis].shape
>>> ( (3,), (3,), (3, 1) )

(第页)

>>> A=np.array([1,2,3])
>>> A[:,np.newaxis]
array([[1],
       [2],
       [3]])
>>> A[np.newaxis,:]
array([[1, 2, 3]])
>>> np.dot(A[:,np.newaxis],A[np.newaxis,:])
array([[1, 2, 3],
       [2, 4, 6],
       [3, 6, 9]])

相关问题 更多 >