如何使用numpy以迭代的方式将两个矩阵相乘。对于python中给定的范围

2024-05-16 10:16:38 发布

您现在位置:Python中文网/ 问答频道 /正文

我想通过乘以初始状态矩阵和给定时间内的转移矩阵来计算一个结果状态矩阵。你知道吗

例如,如果period是1月,那么State1 [matrix]将是State[]*Transition[]
如果周期是2,那么State2[] = State1[]*Transition
3然后State3[]=State2[]* Transition
……等等

使用循环迭代结果矩阵的值时遇到问题:
我不知道如何在python中通过乘法迭代值。你知道吗

这是我的密码:

import numpy as np

statevector=np.array([0.2,0.8])

transition=np.array([[0.9,0.1],[0.7,0.3]])

for product in range(0,1):
    product=statevector

    product=np.dot(statevector,transition)

    product=product+1

    r=np.dot(product,transition)
    print(r)

Tags: 状态np时间矩阵productarraymatrixdot
1条回答
网友
1楼 · 发布于 2024-05-16 10:16:38

如果我没弄错的话,你想把状态向量和转移矩阵相乘。一种方法是在for循环中这样做:

import numpy as np

statevector=np.array([0.2,0.8])

transition=np.array([[0.9,0.1],[0.7,0.3]])

states = [statevector]

for i in range(10):
    statevector=np.dot(statevector,transition)
    states.append(statevector)

print(states)

每次迭代我都会将新状态添加到列表states。最终结果是:

[array([0.2, 0.8]), array([0.74, 0.26]), array([0.848, 0.152]), array([0.8696, 0.1304]), array([0.87392, 0.12608]), array([0.874784, 0.125216]), array([0.8749568, 0.1250432]), array([0.87499136, 0.12500864]), array([0.87499827, 0.12500173]), array([0.87499965, 0.12500035]), array([0.87499993, 0.12500007])]

相关问题 更多 >