【发布时间】:2020-09-19 10:56:35
【问题描述】:
我有一个函数可以将矩阵转换为 SciPy 中 LAPACK 例程所需的函数。我编写了简短的代码来说明我的工作:
import numpy as np
import time
N = 3
def convert_matrix_lapack(Amat,out):
for ii in range(N):
out[(2*N-2-ii):(3*N-2-ii), ii] = Amat[:, ii]
A = np.arange(N**2).reshape(N, N)
A_lapack = np.zeros((3*N-2,N), dtype=np.float)
tt = time.time()
convert_matrix_lapack(A, A_lapack)
print(time.time() - tt)
在实践中通用矩阵(N=3),
>>> A
array([[0, 1, 2],
[3, 4, 5],
[6, 7, 8]])
变成
>>> A_lapack
array([[0., 0., 0.],
[0., 0., 0.],
[0., 0., 2.],
[0., 1., 5.],
[0., 4., 8.],
[3., 7., 0.],
[6., 0., 0.]])
如何使用 NumPy 中的内置函数来固定任意 N 的代码(我的目标是 N 小于 50)?
【问题讨论】:
标签: numpy matrix scipy lapack diagonal