我正在尝试用矩阵乘法更新区域供应列表。
我有一个区域供应列表和一个表示每个区域之间转移概率的始发目的地矩阵。我想用矩阵乘法得到In/Out列表。
Supply = np.array([10, 20])
OD_matrix = np.array([0.3,0.7,0.5,0.5]).reshape(2,2)
Destination
0 1
0 [[0.3, 0.7],
Origin 1 [0.5, 0.5]]
在上面的例子中,有两个区域,区域1和区域2各有10,20个供应。例如,矩阵是每个区域之间转移的概率矩阵的OD_matrix[0][1]表示供应从区域0向区域1的过渡。
现在我可以很容易地用
更新供应矩阵Supply = np.dot(Supply,OD_matrix)
但是我怎么能像
那样创建每个区域的In/Out列表呢?Supply [10,20]
In [10, 7]
Out [7 , 10]
Updated Supply [13,17]
如果我创建"In"在列表中,我知道我应该将矩阵相乘,同时排除原点和目标为自身的元素,然后将它们相加。
我应该如何计算这个矩阵乘法而不使用for循环在较大的矩阵?
根据定义,要进行矩阵乘法,确实需要for循环。没有别的办法。
然而,你实际上可以用Strassen算法做矩阵乘法小于O(n^3)
时间。你可以在提供的链接中进一步研究,看看这是否真的更有效,因此适合你的情况。