0
我最关心的是效率。我有一个非常长的ID列表,并且我有第二个更短的ID列表。我想在第二个列表中存储与第一个列表中每个ID相对应的ID的位置(每个ID只应在每个列表中出现一次)。我写了一个嵌套for循环来做到这一点,但由于第一个列表包含超过1000个元素,第二个列表包含超过80k个元素,所以下面的代码需要很长的时间(但工作)。如何向python中的向量化嵌套for循环
IDD1 = [0] * leng
IDD2 = [0] * leng
## Match IDs to position in table
for i in range(leng):
for j in range(len(halo_id)):
if ID1[i] == halo_id[j]:
IDD1[i] = j
if ID2[i] == halo_id[j]:
IDD2[i] = j
如果它有任何相关性,则ID最初来自halotools光晕目录表。
编辑:
在两种情况下,数据实际上只是一个整数列表。我想要的结果是一个整数列表(索引)。 ID1和ID2本质上是同样的东西,我只需要以相同的方式对它们进行操作。它们是我早期的整数列表。 halo_id是相同的,但更长。
你应该使用NumPy吗?向量化的提法听起来像你应该使用NumPy,但你并没有提到NumPy或任何NumPy数据结构。 – user2357112
'ID1'(和'ID2')只是一个'0'列表,'ID1 [i]'等于'halo_id [j]'。但它听起来像你只需要把'halo_id'转换成反向字典。 – AChampion
你可以抛出一些示例数据,可能有20个元素和你想要的输出吗? –