为了账号安全,请及时绑定邮箱和手机立即绑定

Python:遍历列表以填充 numpy 数组的优雅方法

Python:遍历列表以填充 numpy 数组的优雅方法

慕尼黑5688855 2022-05-19 13:52:01
我正在寻找一种更优雅的方式来执行以下操作: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_dictslist1 = []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)...
查看完整描述

2 回答

?
慕标5832272

TA贡献1966条经验 获得超4个赞

如果没有对某些东西的明确定义,我会选择:


def somestuff(k):

    return k * 42


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


查看完整回答
反对 回复 2022-05-19
?
临摹微笑

TA贡献1982条经验 获得超2个赞

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


查看完整回答
反对 回复 2022-05-19
  • 2 回答
  • 0 关注
  • 199 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信