3d网格的遮罩和直方图

时间:2018-08-15 18:37:40

标签: python python-3.x numpy numpy-ndarray

全部

具有合理的大型3d网格作为NumPy浮点数组,形状为(nx,ny,nz)。具有相似的(相同形状)1s和0s的3d网格,本质上是一个位掩码。我想基于位掩码从网格中选择数据,然后将它们用于直方图。

我现在要做的是

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 个答案:

答案 0 :(得分:1)

如果将base64_encode( $access_token ), 转换为布尔数组,则可以使用boolean array indexing获取与bitmap中的data元素相对应的True元素:

bitmap