繁体   English   中英

numpy * =不起作用

[英]numpy *= not working

我使用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

您用整数而不是浮点数填充了t ,因此NumPy决定要使用整数dtype的矩阵。 当您执行t *= x ,这要求就地执行该操作,从而重用t对象存储结果。 这将结果强制转换为整数,因此可以将它们存储在t

用浮点数初始化t

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

我还建议切换到普通数组,而不是矩阵。 *dot上使用*的便利性不值得不一致matrix引起的情况。 如果您使用的是Python 3.5或更高版本,则甚至可以使用@与常规数组进行矩阵乘法。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM