使用python在循环内通过相同的矩阵矩阵乘法创建不同的矩阵

时间:2018-08-25 13:39:39

标签: python arrays numpy matrix

我有一个尺寸为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 个答案:

答案 0 :(得分:1)

使用listdict表示可变数量的变量。在这种情况下,您可以使用字典理解,将字典键与幂对齐:

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]])}