生成与循环值相对应的矩阵

2024-04-23 14:09:49 发布

您现在位置: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的空列表中。你知道吗

现在,我的代码只计算执行时间的总和。然而,我想把每个循环的时间和附加到我指定的列表。你知道吗

为了计算每个循环的时间并将该循环的时间附加到一个列表中,我需要修改什么,这样我就可以看到随着矩阵变大的时间进程,然后绘制数据进行比较?你知道吗

谢谢

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

Tags: 函数inimport列表fortimemynp
1条回答
网友
1楼 · 发布于 2024-04-23 14:09:49

谢谢你,塔康,这非常有帮助。你知道吗

这就是我想到的,我想它能做我想做的一切。你知道吗

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()

mydet vs np.linalg.det

相关问题 更多 >