草庐IT

OPTIMIZATION

全部标签

python - 内部列表中的第一项尽可能高效

这个问题在这里已经有了答案:Howtoextractthen-thelementsfromalistoftuples(7个答案)关闭4年前。我在pythonA[row,col,value]中有一个协调存储列表,用于存储非零值。如何获取所有行索引的列表?我希望这个A[0:][0]可以作为printA[0:]打印整个列表,但是printA[0:][0]只打印A[0]。我问的原因是为了有效计算每行中非零值的数量i.e遍历range(0,n)其中n是总数行数。这应该比我当前的foriinrange(0,n):forjinA:...方法便宜。类似于:c=[]#forthetotalnumbero

python - os.walk 很慢,有什么办法可以优化吗?

我正在使用os.walk构建数据存储的map(该map稍后在我正在构建的工具中使用)这是我目前使用的代码:deffind_children(tickstore):children=[]dir_list=os.walk(tickstore)foriindir_list:children.append(i[0])returnchildren我对此做了一些分析:dir_list=os.walk(tickstore)立即运行,如果我对dir_list不做任何操作,那么此函数会立即完成。遍历dir_list需要很长时间,即使我不append任何东西,只是遍历它也需要时间。Tickstore是一个

Python:一个不会被重新定位的列表

我正在尝试优化Python中的算法纯粹是为了好玩/好奇。我有一个列表,我不断地从中添加项目和删除项目。我知道Python列表的实现方式,Python会根据列表的大小为您在内存中重新定位列表。例如,如果您有一个包含10个成员的列表,这10个指针将连续存储在内存中,但可能没有空间容纳100个连续的指针,因为另一个程序可能占用了挡路的内存块。因此,当您向列表中添加更多成员时,有时Python会将整个列表重新定位到内存中的不同位置,以便为列表扩展提供更多空间。我很想知道Python中是否有一个自定义数据结构,其行为类似于列表,但允许我避免执行重定位的性能成本。我期待这个数据类型会事先询问我,我

python - 为什么排序后查询表会慢很多?

我有一个使用Pytables的Python程序并以这种简单的方式查询表:defget_element(table,somevar):rows=table.where("colname==somevar")row=next(rows,None)ifrow:returnelem_from_row(row)为了减少查询时间,我决定尝试用table.copy(sortby='colname')对表进行排序.这确实改善了查询时间(在where中花费),但增加了在next()中花费的时间内置功能提升了几个数量级!可能是什么原因?只有当表中有另一列时才会发生这种减慢,并且减慢会随着另一列的元素大小而

python - 在纯 NumPy 中重写 for 循环以减少执行时间

我recentlyaskedabouttryingtooptimiseaPythonloopforascientificapplication,并收到anexcellent,smartwayofrecodingitwithinNumPywhichreducedexecutiontimebyafactorofaround100对我来说!但是,B值的计算实际上嵌套在其他几个循环中,因为它是在规则的位置网格中计算的。是否有类似的智能NumPy重写来缩短此过程的时间?我怀疑这部分的性能提升不会很明显,缺点可能是无法向用户报告计算进度,结果无法写入输出文件直到计算结束,并且可能在一个巨大的步骤中

python - Cython 的功率谱

我正在尝试使用Cython优化我的代码。它正在做一个功率谱,而不是使用FFT,因为这是我们在类里面被告知要做的。我试过用Cython编写代码,但没有发现任何区别。这是我的代码#!/usr/bin/envpython#-*-coding:utf8-*-from__future__importdivisioncimportnumpyasnpimportnumpyasnpcimportcython@cython.boundscheck(False)defpower_spectrum(time,data,doublef_min,doublef_max,doubledf,w=1):cdefdou

python - numpy 中没有临时项的外积的非平凡总和

我想解决的实际问题是,给定一组N单位向量和另一组M向量,计算每个单位向量的平均值它与每个M向量的点积的绝对值。本质上,这是计算两个矩阵的外积,然后求和并取中间的绝对值取平均值。对于N和M不是太大,这并不难,有很多方法可以继续(见下文)。问题是当N和M很大时,创建的临时文件很大,并为所提供的方法提供了实际限制。可以在不创建临时对象的情况下完成此计算吗?我遇到的主要困难是由于绝对值的存在。是否存在用于“线程化”此类计算的通用技术?例如考虑以下代码N=7M=5#Createtheunitvectors,justsowehavesomeexamples,#thisisnotmeanttobee

python - 为 scipy.optimize.minimize(方法 ='L-BFGS-B')设置收敛公差

此页面(http://docs.scipy.org/doc/scipy/reference/optimize.minimize-lbfgsb.html)描述了可以传递给scipy优化包的L-BFGS-B'方法的求解器选项。我正在尝试设置求解器退出容差。文档提到了两个选项,我更愿意使用的是“factr”,求解器在以下情况下退出:(f^k-f^{k+1})/max{|f^k|,|f^{k+1}|,1}(其中epsilon是机器精度)。但是,当我运行我的代码时收到警告:OptimizeWarning:Unknownsolveroptions:factr因此我推测此选项已被弃用,取而代之的是f

python - 用 numpy/scipy 卸载吞咽

有没有人将unladen-swallow与numpy/scipy一起用于数字/科学应用程序?根据您的经验,它明显更快吗?任何意见都会很棒。 最佳答案 目前还没有人对UnladenSwallow有丰富的经验(开发人员除外),因此很难找到可以讨论它的人。此外,随着关于将UnladenSwallow(使用LLVM构建)与CPython运行时合并的讨论,在一切变得更加稳定之前,事情将成为一个移动的目标。有可用于UnladenSwallow的基准测试,但不包括numpy和scipy。Asthedevelopersthemselvesexpla

python - 为什么Python的 "sorted()"比 "copy, then .sort()"慢

这是我运行的代码:importtimeitprinttimeit.Timer('''a=sorted(x)''','''x=[(2,'bla'),(4,'boo'),(3,4),(1,2),(0,1),(4,3),(2,1),(0,0)]''').timeit(number=1000)printtimeit.Timer('''a=x[:];a.sort()''','''x=[(2,'bla'),(4,'boo'),(3,4),(1,2),(0,1),(4,3),(2,1),(0,0)]''').timeit(number=1000)结果如下:0.002596632158370.0020