非常慢的 numpy OR 操作

Very slow numpy OR operation

我正在对一个 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% 以上。

有什么方法可以improve/optimize 上面的代码性能?

谢谢, 丽娃

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他们在一起。性能应该比反复 oring 更好。但如果 alist 构造是最慢的一步,我不会感到惊讶。

但是没有工作示例,我无法测试或计时。