猿问

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)

遍历列表,但不使用索引

新的 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)

...


慕尼黑5688855
浏览 200回答 2
2回答

慕标5832272

如果没有对某些东西的明确定义,我会选择:def somestuff(k):    return k * 42converted_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 manipulationfor x in np.nditer(filled_list):          #iteration over array    x = #do stuff here我刚刚看到作者添加了一个不适用于初始 numpy-array 的示例。所以这个答案可能已经过时了。
随时随地看视频慕课网APP

相关分类

Python
我要回答