numpy*=不工作

hrw*_*per 2 python numpy

我使用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
Run Code Online (Sandbox Code Playgroud)

use*_*ica 5

你填充t了整数而不是浮点数,所以NumPy决定你想要一个整数dtype矩阵.执行t *= x此操作时,请求执行操作,重新使用该t对象存储结果.这会强制将结果转换为整数,因此可以存储它们t.

t使用浮点数初始化:

t = numpy.matrix([1.0, 0.0, 0.0])
Run Code Online (Sandbox Code Playgroud)

我还建议切换到普通数组而不是矩阵.*过度的便利dot是不值得的不一致的matrix原因.如果您使用的是Python 3.5或更高版本,您甚至可以使用@常规数组进行矩阵乘法.