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個元素和你想要的輸出嗎? –