我使用numpy来计算矩阵乘法。 如果我使用t = t * x,它可以正常工作,但如果我使用t * = x,它就不会。 我需要使用t = t * x?
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
答案 0 :(得分:5)
您使用整数而不是浮点数填充t
,因此NumPy决定您需要一个整数dtype矩阵。执行t *= x
时,会请求执行操作,重用t
对象来存储结果。这会强制将结果转换为整数,因此可以将它们存储在t
。
使用浮点数初始化t
:
t = numpy.matrix([1.0, 0.0, 0.0])
我还建议切换到普通数组而不是矩阵。 *
超过dot
的便利性不值matrix
不一致@
。如果您使用的是Python 3.5或更高版本,您甚至可以使用XmlReader
进行矩阵乘法与常规数组。