首页 > 解决方案 > Python:遍历列表以填充 numpy 数组的优雅方法

问题描述

我正在寻找一种更优雅的方式来执行以下操作:

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)

编辑:一些东西的例子

# 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)
...

标签: pythonnumpy

解决方案


不要将您的起始列表用作列表类型。直接创建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 的示例。所以这个答案可能已经过时了。


推荐阅读