python - 一次将一个元素添加到多个列表中python
问题描述
我有一个二维列表数组,我想知道是否可以一次将一个元素附加到所有列表中,而无需使用双循环遍历所有元素。
假设我有这个列表数组:
matrix_of_lists = np.array([[2,3],[1]],
[[2,5,4],[2,5]]])
我想做类似的事情:
matrix_of_lists[:].append(6)
matrix_of_lists = np.array([[2,3,6],[1,6]],
[[2,5,4,6],[2,5,6]]])
我知道如何用两个循环来做到这一点,但我想优化/加速这个过程。我的列表数组已经在一个循环中并且非常大:1000*1000。
这可能是不可能的。非常感谢。
解决方案
我怀疑您能否从矢量化中获得很多性能,因为您的数组最终存储了列表引用。但这是一种避免编写循环并适用于任意形状的方法。
@np.vectorize
def append_vec(mat, elt):
mat.append(elt)
append_vec(matrix_of_lists, 1) # works inplace
# array([[list([2, 3, 1, 1]), list([1, 1])],
# [list([2, 5, 4, 1]), list([2, 5, 1])]], dtype=object)
一种更好的方法,无需创建 s 数组NaN
。
def append_vec(mat, elt):
mat.append(elt)
return None
append_vec = np.frompyfunc(append_vec, 2, 0)
推荐阅读
- scriptdom - Microsoft.SqlServer.TransactSql.ScriptDom 中不是表的多部分标识符
- c++ - 无法在容器内找到 gtest
- javascript - 如何将新对象添加到 Object Vuejs
- c++ - VS2019 中的 Clang 选项
- r - RStudio 中的缓慢输出
- testing - 执行 Postman 测试脚本时出错
- python - 仅查找图像中的红色像素并将其变暗为更红
- json - JSONDecoder:为某些字段保存原始 JSON
- sequelize.js - 续集交易是原子的吗?
- python - 如何解析目录中的多个 fastq 文件?