2016-02-19 36 views
2

我使用numpy來計算矩陣乘法。 如果我使用t = t * x,它工作得很好,但如果我使用t * = x,它不會。 我需要使用t = t * x嗎?numpy * =不工作

import numpy as np 

if __name__ == '__main__': 
    x = [ 
     [0.9, 0.075, 0.025], 
     [0.15, 0.8, 0.05], 
     [0.25, 0.25, 0.5] 
    ] 
    t = [1, 0, 0] 
    x = np.matrix(x) 
    t = np.matrix(t) 
    t = t * x # work , [[ 0.9 0.075 0.025]] 
    # t *= x # not work? always [[0 0 0]] 
    print t 

回答

5

你有整型,而不是花車充滿t,所以NumPy的決定你想要的整數D型的矩陣。當您執行t *= x時,會要求執行該操作,重新使用t對象來存儲結果。這會強制將結果轉換爲整數,因此可以將它們存儲在t中。

初始化t用浮漂:

t = numpy.matrix([1.0, 0.0, 0.0]) 

我還建議切換到普通陣列,而不是矩陣。 *超過dot的便利性不符合matrix的不一致原因。如果您使用的是Python 3.5或更高版本,甚至可以使用@與常規數組進行矩陣乘法。