python-3.x - 非常慢的 numpy OR 操作
问题描述
我正在对一个 numpy dtype 数组对象的大型数据集进行 OR 操作。
下面的代码是外部 FOR 循环的一部分,它经过 15 列,并检查用户名是否在这些列中可用,如果是,则标记这些行以进行进一步操作。
mask= mask | (np_array[:,col_index[f"COL_{col_number}"]] == username)
mask= 与 np_array 长度相同的 Numpy 一维数组 np_array = Numpy dtype ndarray 对象
这行代码占用了我总代码时间的 60% 以上。
我们有什么办法可以改进/优化上述代码性能?
谢谢,丽娃
解决方案
alist = [(np_array[:,col_index[f"COL_{col_number}"]] == username) for col_number in range(columns)]
这应该是所有 col_number 测试的列表
mask = np.logical_or.reduce(alist)
他们应该or
在一起。性能应该比反复or
ing好。alist
但如果施工是最慢的一步,我不会感到惊讶。
但是如果没有一个有效的例子,我无法测试或计时。
推荐阅读
- jquery - 语义 UI 模式一打开就关闭
- node.js - PG 不会连接大的 SQL 字符串
- python-3.x - 为什么这些 if 语句在此代码中不起作用?python餐厅选择器
- laravel - laravel 视图的无限重复
- laravel - 使用 Laravel Artisan 从主表中检索相关表并选择字段
- amazon-web-services - AWS CloudWatch Logs 事件是否具有同步时钟?
- javascript - 存储在本地存储中的 Firebase 用户不起作用?(javascript)
- javascript - 尝试使用此关键字将函数变量附加到文档
- java - JSP:加入 2 个实体时出现 NumberFormatException
- ssas - SSAS 表格模型:计算表和 DAX 之间的差异