【问题标题】:Numpy: broadcasting + boolean indexingNumpy:广播+布尔索引
【发布时间】:2015-11-30 02:17:28
【问题描述】:

我有以下 numpy 数组

A: shape (n1, n2) array of float
B: shape (n2,) array of float
M: shape (n1, n2) array of bool

如何将以下伪代码转换为高效真实代码?数组可能很大,可能有超过 1 亿个元素。

A[M] = ("B broadcast to shape (n1,n2)")[M]

【问题讨论】:

    标签: python numpy array-broadcasting


    【解决方案1】:

    广播简单且节省内存:

    A, B, M = np.broadcast_arrays(A, B, M)
    

    但是,在您的代码 A[M] = B[M] 中使用此 B 不会节省内存,因为 B[M] 的实际元素数量与 MTrue 值一样多。

    改为使用:

    np.putmask(A, M, B)
    

    由于B 使用putmask 函数自动重复,您甚至不必广播它。虽然我想这样做不会有什么坏处。

    【讨论】:

      猜你喜欢
      • 2018-12-13
      • 2023-04-03
      • 1970-01-01
      • 1970-01-01
      • 2017-12-28
      • 2021-09-19
      • 1970-01-01
      • 2017-12-28
      • 1970-01-01
      相关资源
      最近更新 更多