Python 如何使用numpy加快for循环代码的速度
我想让我的成像处理代码更快 任务Python 如何使用numpy加快for循环代码的速度,python,performance,numpy,opencv,for-loop,Python,Performance,Numpy,Opencv,For Loop,我想让我的成像处理代码更快 任务 准备2张图像(img_kido_dx、img_kido_dy) 准备2个渐变光(Rpg_grad_p,Rpg_grad_q) 计算2x2矩阵H,该矩阵在每个像素处都有一些信息 **算法** matE=[[E_x1,E_x2,…E_xn],[E_y1,E_y2,…E_yn]] matR=[[R_p1,R_p2,…R_pn],[R_q1,R_q2,…R_qn]] matM=库存(matR) 数学=matE x matM 我试图用for循环编写代
- 准备2张图像(img_kido_dx、img_kido_dy)
- 准备2个渐变光(Rpg_grad_p,Rpg_grad_q)
- 计算2x2矩阵H,该矩阵在每个像素处都有一些信息
- matE=[[E_x1,E_x2,…E_xn],[E_y1,E_y2,…E_yn]]
- matR=[[R_p1,R_p2,…R_pn],[R_q1,R_q2,…R_qn]]
- matM=库存(matR)
- 数学=matE x matM
import numpy as np
N_ROW = 1080
N_COL = 1920
N_light = 20
img_kido_dx = np.empty((N_ROW * N_COL, N_light))
img_kido_dy = np.empty((N_ROW * N_COL,N_light))
Rpq_grad_p = np.empty((N_ROW * N_COL,N_light))
Rpq_grad_q = np.empty((N_ROW * N_COL,N_light))
for i in range(N_ROW * N_COL):
mat_E = np.array([img_kido_dx[i, :], img_kido_dy[i, :]])
mat_R = np.array([Rpq_grad_p[i, :], Rpq_grad_q[i, :]])
mat_M = np.linalg.pinv(mat_R)
mat_H = np.matmul(mat_E, mat_M)
您包含打字错误——您定义变量
Rpg\u grad\u p
和Rpg\u grad\u q
,然后稍后引用变量Rpq\u grad\u p
和Rpq\u grad\u q
(注意第三个字符-g
与q
)谢谢。我纠正了拼写错误。Rpq是正确的。如果你至少有numpy 1.14,那么你可以在矩阵堆栈上工作。i、 你可以给它一个数组的形状(N\u行*N列,2,20)
。也适用于堆栈。然后再进行整形可以制作这样的堆栈。(注:在你更正之前写的,所以我选择了Rpg)。非常感谢!你的代码比原来的代码快20多倍。