【问题标题】:How to make this Python for-loop run faster?如何让这个 Python for 循环运行得更快?
【发布时间】:2018-04-20 13:23:44
【问题描述】:
for j in range(0, NumberOfFeatures):
    for k in range(j+1,NumberOfFeatures):
        countArray = np.ones((2,2))
        for i in range(0,NumberOfTrainingExamples):
            countArray[XTrain[i,j],XTrain[i,k]] += 1

对于大的NumberOfFeaturesNumberOfTrainingExamples,最里面的for循环需要相当长的时间

【问题讨论】:

  • 此代码示例不完整
  • 我需要每个 j&k 的 countArray。我用它来计算一些其他参数,然后可以重置它。这就是为什么我只需要对最里面的 for 循环进行更快的计算。
  • 此代码示例不完整
  • 因为在循环结束后你从不引用countArray,而且实际上代码根本不产生任何输出,你可以完全删除循环,结果将是相同的,但要快得多。 (如果你在想“但我确实在循环之后使用countArray,并且我确实输出信息”,那么该代码也应该作为minimal reproducible example的一部分出现在问题中)跨度>
  • 我不认为你可以让它运行得更快。 Python 中的数组很慢。如果您需要快速数组,请考虑 PHP。否则,请尝试以不同的方式解决您的问题——将其放入数据库并编写查询(例如)。 stackoverflow.com/questions/36778568/…

标签: python performance for-loop


【解决方案1】:

基本上是 O(n^3)(其中 n 不是同一个数字)。

由于代码不完整,很难确定可以做得更好,但根据您提供的内容,尝试将其减少到至少 n^2 ,否则将需要一些时间。

如果在 1000 个循环中每个循环有 10 个,则每个循环中的 1000 个是 1,000,000,000,因此对于更大的数字,很难快速计算。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2019-10-09
    • 2021-11-03
    • 2021-02-17
    • 2020-08-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-07-07
    相关资源
    最近更新 更多