簡體   English   中英

Python:遍歷列表以填充 numpy 數組的優雅方式

[英]Python: Elegant way to iterate over list to fill numpy array

我正在尋找一種更優雅的方式來執行以下操作:

filled_list = [1, 3, 54, 2, 8]
new_list = []

for k in filled_list:
     new_k = # do some stuff
     new_list.append(new_k)

converted_array = np.array(new_list)
  • 迭代列表,但不使用索引
  • 新的 numpy 數組將與 new_list 中的條目數量完全相同
  • 最后的轉換在我看來並不漂亮,我想防止這種情況發生,最好從一個 numpy 數組開始。 但隨后我需要遍歷索引,這是我不想要的(因為它使代碼更加龐大)

編輯:一些東西的例子

# previously filled: dict1, dict2, dict3, common_keys_of_all_dicts

list1 = []
list2 = []
list3 = []
for k in common_keys_of_all_dicts:
   list1.append(dict1[k].item1)
   list2.append(dict2[k].item2)
   list3.append(dict3[k].item3)
array1 = np.array(list1)
...

如果沒有對某些東西的明確定義,我會選擇:

def somestuff(k):
    return k * 42

converted_array = np.array([somestuff(k) for k in filled_list])

不要將您的起始列表用作列表類型。 直接將filled_list創建為一個numpy 數組,並直接在該數組上執行所有操作。 通常所有類型的數學內容都可以直接在數組上完成。 numpy 直接促進了更復雜的東西。 如果真的有必要,您可以迭代 numpy 數組。

例如:

filled_list = np.array([1, 2, 3, 4, 5])
result = filled_list * filled_list + 1    #vectorized manipulation

for x in np.nditer(filled_list):          #iteration over array
    x = #do stuff here

我剛剛看到作者添加了一個不適用於初始 numpy-array 的示例。 所以這個答案可能已經過時了。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM