Python程序由于genfromtxt而严重减慢,即使对于非常小的5x5数组也是如此

2024-04-18 04:43:58 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一个python程序,它接收两个5×8的数组作为输入,然后从中计算出大约4000个值来得到结果。 注释掉的部分显示了我的声明,没有使用genfromtxt,程序在0.2秒内完成。如果我使用如图所示的genfromtxt,程序需要4.7秒,这对我来说是不可接受的,因为这是一个演示运行什么将是一个非常大的程序

    varcost1=np.genfromtxt('varcost_vr01.csv', delimiter=',', dtype=None)
varcost=varcost1
##    varcost=[[110,100,140,120,160,150,200,180],
##             [120,109,153,131,175,164,218,220],
##             [150,136,191,164,218,205,273,250],
##             [180,164,229,196,262,246,327,300],
##             [200,182,255,218,291,273,364,350]]

我使用time()来查看执行时间。我还尝试将数组赋给另一个变量,然后将其与原始变量相等,这样就不会有每次需要数据时都读取文件的风险,但这似乎也没有帮助

我觉得这很奇怪,因为所讨论的输入非常小,而我的系统是一个相对现代的系统:

系统型号:HP ProBook 640 G2、Windows 7、IDLE for Python 系统类型:基于x64的PC 处理器:Intel(R)Core(TM)i5-6300U CPU@2.40GHz,2401 Mhz,2核,4逻辑处理器

我需要使用genfromtxt功能,因为这将被放大,然后它将很难测试/操作。如何加快进程

编辑:我找到了一个临时的解决方案;genfromtxt在一个有大约4000个调用的函数中被调用。在函数定义开始之前,只使用genfromtxt两次,然后将它赋给一个变量,然后在函数中使用该变量,这样可以将时间缩短到0.28秒,这对我来说是可以接受的


Tags: csv函数程序声明系统np时间数组