python - 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)
...
解决方案
不要将您的起始列表用作列表类型。直接创建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 的示例。所以这个答案可能已经过时了。
推荐阅读
- drupal - 通过升级删除了添加到 Drupal 核心的自定义功能
- unity3d - unity 自定义地图显示不正确
- kubernetes - kubernetes 应用程序 pod 无法共享 pod emptydir 卷挂载到 daemonset fluentd pod
- node.js - 无需完全下载即可获取远程 MP3 文件的持续时间
- laravel - Laravel - Delete with all relations
- python - Pandas append() error with two dataframes
- javascript - 在数组中添加对象的值 - javascript
- java - Jackson Parsing for json object inside json
- vba - 使用 Visual Basic 在 Excel 中设置宏
- wso2 - WSO2 分布式设置 - 无法通过网关访问 API