sjh*_*e14 3 python numpy scipy python-3.x jupyter-notebook
假设我有以下代码:
# define a 3x3 array
A = np.array([[-2, 1, 1], [1,-2,1], [1,1,-2]])
# define a 1D array of scalars to multiply A with
test = np.arange(10)
for i in range(len(test)):
matrix = scipy.linalg.expm(A*test[i])
Run Code Online (Sandbox Code Playgroud)
我想看看是否有一种方法可以在不使用 for 循环的情况下执行此乘法。我不想使用矩阵乘法将两个数组相乘。我将测试数组视为一组标量值,我想将它们与 A 逐一相乘。必须有某种偷偷摸摸的麻木的方法来做到这一点。有任何想法吗?
小智 5
这是“如何在不使用 for 循环的情况下通过多个标量缩放矩阵”问题的答案。这忽略了矩阵求幂,因为我认为没有 for 循环就没有办法做到这一点,但问题似乎并没有询问求幂步骤。
您可以使用 3D 数组来使用 numpy 的向量化乘法。
import numpy as np
A = np.array([[[-2, 1, 1], [1,-2,1], [1,1,-2]]])
test = np.arange(10).reshape(-1,1,1)
result = test*A
Run Code Online (Sandbox Code Playgroud)