代码之家  ›  专栏  ›  技术社区  ›  Severin Pappadeux

三维网格的掩模与直方图

  •  1
  • Severin Pappadeux  · 技术社区  · 6 年前

    全部

    我现在做的是

    k = 0
    for iz in range(0, nz):
        for iy in range(0, ny):
            for ix in range(0, nx):
                d = data[ix, iy, iz]
                b = bitmap[ix, iy, iz]
                if b > 0:
                    droi[k] = d
                    k += 1
    
    hist, bins = np.histogram(droi, bins = 200, range=(0.0, dmax))
    

    这是不合法和缓慢的。我想把两个数组都展平并相乘,然后运行直方图,但0也可能出现在数据中,所以它会改变直方图。

    有什么想法,如何更快,更小的代码?

    1 回复  |  直到 6 年前
        1
  •  1
  •   schlip    6 年前

    如果你改变信仰 bitmap 对于一组布尔人,可以使用 boolean array indexing data 对应于 True 位图

    bitmapbool = numpy.array(bitmap, dtype=bool)
    droi = data[bitmapbool]