首页 > 解决方案 > 非常慢的 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% 以上。

我们有什么办法可以改进/优化上述代码性能?

谢谢,丽娃

标签: python-3.xnumpynumpy-ndarray

解决方案


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但如果施工是最慢的一步,我不会感到惊讶。

但是如果没有一个有效的例子,我无法测试或计时。


推荐阅读