如何使用numpy将NxN矩阵H与Nx1数组t = [t1,t2,...,tN]相乘,使得H * t = [H * t1,H * t2,...,H * tN]?

时间:2018-12-06 16:06:10

标签: numpy matrix

我知道如何使用for循环,但是有没有办法使用numpy数组及其操作来实现这种乘法?

1 个答案:

答案 0 :(得分:1)

您可以使用np.multiply.outer

>>> import numpy as np
>>> 
>>> H = np.arange(9).reshape(3, 3)
>>> t = np.c_[10:40:10]
>>> 
>>> H                                                                                                               
array([[0, 1, 2],                                                                                                   
       [3, 4, 5],                                                                                                   
       [6, 7, 8]])                                                                                                  
>>> t                                                                                                               
array([[10],                                                                                                        
       [20],                                                                                                        
       [30]])                                                                                                       
>>>                                                                                                                 
>>> np.multiply.outer(t.ravel(), H)
array([[[  0,  10,  20],                                                                                            
        [ 30,  40,  50],                                                                                            
        [ 60,  70,  80]],                                                                                           

       [[  0,  20,  40],                                                                                            
        [ 60,  80, 100],                                                                                            
        [120, 140, 160]],                                                                                           

       [[  0,  30,  60],                                                                                            
        [ 90, 120, 150],                                                                                            
        [180, 210, 240]]])