Python 生成与循环值对应的矩阵
我的目标是评估输出相同结果的两个不同函数之间的执行时间。我正在研究np.linalg.det()和一个名为mydet()的函数 对于每个循环,我想生成一个nxn矩阵,其中n在(2,9)的范围内。第2个原因是任何较小的值都不是矩阵,第9个原因是任何较大的值和执行时间都将非常重要 我希望n值对应于循环值I,那么n=I+2?我从0开始,需要n从2开始 我想测量每个循环所需的时间,并将其分别附加到名为my_det_time和np_det_time的空列表中 现在,我的代码只计算执行时间的总和。然而,我希望占用每个循环的时间,并附加到我指定的列表中 为了计算每个循环的时间并将循环的时间附加到列表中,我需要改变什么,以便我可以看到矩阵变大时的时间进度,然后绘制数据进行比较 谢谢Python 生成与循环值对应的矩阵,python,loops,matrix,time,determinants,Python,Loops,Matrix,Time,Determinants,我的目标是评估输出相同结果的两个不同函数之间的执行时间。我正在研究np.linalg.det()和一个名为mydet()的函数 对于每个循环,我想生成一个nxn矩阵,其中n在(2,9)的范围内。第2个原因是任何较小的值都不是矩阵,第9个原因是任何较大的值和执行时间都将非常重要 我希望n值对应于循环值I,那么n=I+2?我从0开始,需要n从2开始 我想测量每个循环所需的时间,并将其分别附加到名为my_det_time和np_det_time的空列表中 现在,我的代码只计算执行时间的总和。然而,我希
import time
start_time = time.time()
from random import randint
my_det_time = []
np_det_time = []
for i in range(8):
n = i+2
s = 10
A = [[round(random.random()*s) for i in range(n)] for j in range(n)]
np.linalg.det(A)
print("%s seconds" % (time.time() - start_time))
您可以有一个时间列表:
exe_times = []
for i in range(8):
start = time.time()
n = i+2
s = 10
A = [[round(random.random()*s) for i in range(n)] for j in range(n)]
np.linalg.det(A)
end = time.time()
exe_times.append(end-start)
但请记住,这一时间是所谓的挂钟时间,即从循环开始到循环结束所经过的全部时间。这段时间并不是CPU完全通过计算循环中的指令所花费的时间。这可能是一个问题,例如,如果一个CPU绑定的程序在您的低持续时间循环开始运行的同时,在高持续时间循环之前停止运行。在这种情况下,时间比较是不准确的。谢谢H.塔康,这非常有帮助 这就是我想到的,我想它能做我想要的一切
import matplotlib.patches as mpatches
import matplotlib.pyplot as plt
import time
from random import randint
my_det_time = []
np_det_time = []
for i in range(8):
start = time.time()
n = i+2
s = 10
A = [[round(random.random()*s) for i in range(n)] for j in range(n)]
mydet(A)
end = time.time()
my_det_time.append(end-start)
for i in range(8):
start = time.time()
n = i+2
s = 10
A = [[round(random.random()*s) for i in range(n)] for j in range(n)]
np.linalg.det(A)
end = time.time()
np_det_time.append(end-start)
plt.plot([2,3,4,5,6,7,8,9], np_det_time, 'r', label='np.linalg.det')
plt.plot([2,3,4,5,6,7,8,9], my_det_time, 'g', label='mydet')
red_patch = mpatches.Patch(color='red', label='np.linalg.det')
green_patch = mpatches.Patch(color='green', label='mydet')
plt.legend(handles=[red_patch, green_patch])
plt.title('mydet() vs. np.linalg.det()')
plt.ylabel('Execution Time (sec)')
plt.xlabel('Matrix Size (n x n)')
plt.show()
您可以使用范围(2,10)