gpt4 book ai didi

python - 我需要使我的程序嵌套循环工作更简单,因为操作时间是最长的

转载 作者:行者123 更新时间:2023-12-01 08:23:46 24 4
gpt4 key购买 nike

我是 python 嵌套循环的学习者。

问题:

下面我写了我的代码。我想让我的代码更简单,因为当我运行代码时,需要很长时间才能生成结果。

我的代码:

我有一个包含 1000 个值的列表:

Brake_index_values = [ 44990678,  44990679,  44990680,  44990681,  44990682,  44990683,
44997076, 44990684, 44997077, 44990685,
...
44960673, 8195083, 8979525, 100107546, 11089058, 43040161,
43059162, 100100533, 10180192, 10036189]

我将元素 1 存储在另一个列表中

original_top_brake_index = [Brake_index_values[0]]

我创建了一个名为 temp 的临时列表和一个 numpy 数组,用于通过循环进行迭代:

temp =[]
arr = np.arange(0,1000,1)

循环操作:

for i in range(1, len(Brake_index_values)):
if top_15_brake <= 15:
a1 = Brake_index_values[i]
#a2 = Brake_index_values[j]
a3 = arr[:i]
for j in a3:
a2 = range(Brake_index_values[j] - 30000, Brake_index_values[j] + 30000)
if a1 in a2:
pass
else:
temp.append(a1)
if len(temp)== len(a3):
original_top_brake_index.append(a1)
top_15_brake += 1
del temp[:]
else:
del temp[:]
continue

我在代码中做了什么:

我正在比较 Brake_index_values[0] 元素前后 30000 范围内可用的 Brake_index_values[1] 元素,即 range(Brake_index_values[ 0]-30000,Brake_index_values[0]+30000)`。

如果 Brake_index_values[1] 在范围内可用,我应该忽略该元素并转到下一个元素 Brake_index_values[2] 并遵循与之前相同的过程对于 Brake_index_values[0]Brake_index_values[1]

如果可用,请将值存储在original_top_brake_index中,并进行append操作。

我得到的结果:

它正在工作,但需要很长时间才能完成操作,有时会显示 MemoryError。

要求:

我只是希望我的代码能够通过简单的操作更简单、更高效地工作。

请求:

我不是一个好的编码员,无论如何我确信会有一些简单的方法来完成上述过程。请提供一些避免此问题的线索或新的解决方法。

最佳答案

你可以看看numpy.where
( https://docs.scipy.org/doc/numpy-1.15.0/reference/generated/numpy.where.html )
来解决这个问题。您的代码将如下所示:

BIV = np.array(Brake_index_values) # shortening for convenience
ref_val = BIV[0]
req_indicies, = np.where((BIV < ref_val-3e4) | (BIV > ref_val+3e4))
req_array = BIV[req_indicies]

这应该为您提供一个包含通过条件的所有值的数组,您可以进一步使用它。

关于python - 我需要使我的程序嵌套循环工作更简单,因为操作时间是最长的,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54435996/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com