【发布时间】:2020-06-29 15:37:13
【问题描述】:
我想基于 3D 掩码(包含 1 和 0)对 3D 数据集上的特定元素执行简单的操作。我想做的操作是除法,因为我不想将 NaN 引入我的数据集,所以我只想对掩码内的元素执行除法。另外,我将在具有相当大矩阵的大型数据集上执行此操作,因此我想尽可能避免 for 循环。
这里有一些代码:
inside_mask = numpy.where(mask_data>0)
这给了我一个三个 1 x 97442 的向量,其值对应于我的掩码中的一个索引,其中我有一个“一”。即 vector1[0]、vector2[0]、vector3[0] 是我有“一个”的第一个元素。
因此我可以这样做:
for i in range(0,97442):
row = inside_mask[0][i]
col = inside_mask[1][i]
depth = inside_mask[2][i]
someValue = valueMatrix[row, col, depth]
calculation[row, col, depth] = signal_data[row, col, depth]/someValue
所以问题很简单:如何仅使用元素操作而不使用 for 循环来做到这一点?
此致,杰斯帕
【问题讨论】:
标签: python numpy matrix indexing