【发布时间】:2022-01-07 16:36:21
【问题描述】:
我听说在另一个中使用两个 for 循环需要很长时间。但是,我不确定如何解决这个问题。我的每个 for 循环都是 ~40,000 循环,所以时间很长。我基本上是在尝试比较两个 DataFrame 的条目。如果某行中的三个条目(帧、x 和 y)在两者之间匹配,那么我想将其保存到新的数据数组中。我的最终结果是有一个带有帧、x、y、粒子#和两个不同强度的数据框)。我相信我正在做的事情会奏效,但需要 5 个多小时才能得到结果。无论如何我可以让这段代码更快更高效吗?非常感谢,我的代码贴在下面。
intensity = np.zeros((tracks.shape[0], 2))
location = np.zeros((tracks.shape[0], 2))
frame = np.zeros((tracks.shape[0], 1))
particle = np.zeros((tracks.shape[0], 1))
for r in range(red_masked_tracks.shape[0]):
for g in range(green_masked_tracks.shape[0]):
if red_masked_tracks['frame'][r] == green_masked_tracks['frame'][g]:
if round(red_masked_tracks['x'][r]) == round(green_masked_tracks['x'][g]) and round(red_masked_tracks['y'][r]) == round(green_masked_tracks['y'][g]):
intensity[g] = [red_masked_tracks['mass'][r], green_masked_tracks['mass'][g]]
location[g] = [red_masked_tracks['x'][r], red_masked_tracks['y'][r]]
frame[g] = red_masked_tracks['frame'][r]
particle[g] = red_masked_tracks['particle'][r]
break
【问题讨论】:
-
阅读
numpy.argwhere
标签: python python-3.x performance loops for-loop