【问题标题】:Very slow numpy OR operation非常慢的 numpy OR 操作
【发布时间】:2021-09-29 08:18:49
【问题描述】:

我正在对一个 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.x numpy numpy-ndarray


【解决方案1】:
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 构造是最慢的一步,我不会感到惊讶。

但如果没有工作示例,我无法对此进行测试或计时。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-12-16
    • 2016-09-22
    • 1970-01-01
    • 2011-11-16
    • 2011-08-11
    相关资源
    最近更新 更多