【发布时间】:2017-07-13 17:58:59
【问题描述】:
在对我们的源代码库进行广泛分析后,我们发现所有性能问题都是在循环一些巨大的列表时引起的。
导致问题的代码段落可以识别如下:
#ISSUE 1
myList = [i for j, i in enumerate(myList) if j not in anotherList]
#ISSUE 2
TargetIndex = next((myList.index(n) for n in myList if n > someBoundary), len(myList))
#ISSUE 3
def myFunction():
for i in myList:
if abs(i) > someLimit:
return 0
return 1
#ISSUE 4
for n,i in enumerate(myList):
if abs(i) < someLimit:
myList[n] = 0
我很确定一些numpy 专家可以写下四个单行代码,这将极大地提升我们的应用程序的性能。但是对于这些循环操作,也许还有比我不知道的numpy 更好的方法。
非常感谢有关该主题的任何建议。
【问题讨论】:
-
这些都在列表上工作。为什么是 numpy 的问题?如果它们是数组,我们可能会建议更快的编译操作。但为此,我们需要了解 shape 和 dtype。
-
嗨。所有列表元素的数据类型始终是浮点数,列表是平面的(没有列表的列表)。
-
更多 numpy 上下文请查看stackoverflow.com/q/42356625
标签: python arrays performance python-2.7 numpy