2016-02-19 35 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或更高版本,甚至可以使用@与常规数组进行矩阵乘法。