使用python在循环内通过相同的矩阵-矩阵乘法创建不同的矩阵
Posted
技术标签:
【中文标题】使用python在循环内通过相同的矩阵-矩阵乘法创建不同的矩阵【英文标题】:Creating different matrix by same matrix-matrix multiplication inside loop using python 【发布时间】:2018-08-25 13:39:38 【问题描述】:我有一个维度为 n*n 的方阵。我必须定义一个函数,该函数将此矩阵A
作为输入以及一个值k
。
矩阵 A 是由 numpy 随机函数生成的随机矩阵。
假设 k=4,那么我们必须生成三个不同的矩阵:
matrix_2=A*A
matrix_3=A*A*A
matrix_4=A*A*A*A
以上所有乘法都是矩阵乘法(其中列 A = B 行),而不是元素乘法。
k 可以是用户给定的任何值。我们如何在 python 中使用 for 循环来实现这一点。
【问题讨论】:
目前有代码吗? 您所描述的简单实现应该可以工作。万一你被困在某个部分,只问那个部分。 好的。我会记住的。谢谢 【参考方案1】:将list
或dict
用于可变数量的变量。在这种情况下,您可以使用字典推导式,字典键与幂对齐:
from numpy.linalg import matrix_power
np.random.seed(0)
n = 2
A = np.random.random((n, n))
def make_arrays(arr, k):
return i: matrix_power(arr, i) for i in range(1, k+1)
res = make_arrays(A, 4)
结果:
1: array([[0.5488135 , 0.71518937],
[0.60276338, 0.54488318]]),
2: array([[0.73228622, 0.78220024],
[0.65924031, 0.72798764]]),
3: array([[0.87337022, 0.94993107],
[0.80060427, 0.86814988]]),
4: array([[1.05190103, 1.14222656],
[0.96267139, 1.04562393]])
【讨论】:
这是元素乘法,我的意思是矩阵乘法。 np.matmul(a,b) 是否也意味着同样的事情? 对于矩阵,是的。但请阅读docs 以找出与np.dot
/ @
的区别,这是更常见的操作。以上是关于使用python在循环内通过相同的矩阵-矩阵乘法创建不同的矩阵的主要内容,如果未能解决你的问题,请参考以下文章