Python NumPy:三维非零的索引(图像掩蔽)
小结:我正在寻找类似于“numpy.nonzero”的东西,但有一个转折点。我想搜索所有包含第三维非零元素的索引。如果存在任何元素,请给我该维度的索引 详细信息:我的项目包括接收、解析和输出修改后的图像文件。它首先将图像转换为3D numpy阵列。使用该文件将创建一个掩码。接下来,它使用'numpy.bitwise_and'查找掩码的位模式与源图像重叠的位置,然后根据这些索引执行操作Python NumPy:三维非零的索引(图像掩蔽),python,numpy,Python,Numpy,小结:我正在寻找类似于“numpy.nonzero”的东西,但有一个转折点。我想搜索所有包含第三维非零元素的索引。如果存在任何元素,请给我该维度的索引 详细信息:我的项目包括接收、解析和输出修改后的图像文件。它首先将图像转换为3D numpy阵列。使用该文件将创建一个掩码。接下来,它使用'numpy.bitwise_and'查找掩码的位模式与源图像重叠的位置,然后根据这些索引执行操作 mask = create_mask(self.image) # spare array, same size
mask = create_mask(self.image) # spare array, same size as self.image
overlap = np.bitwise_and(self.image, mask)
indices = []
for y, row in enumerate(overlap):
for x, col in enumerate(row):
if any(col): # any RGB values are not 0
indices.append((y,x))
for (y, x) in indices:
pass # do stuff
解决这个问题的最佳方法是什么?我确信有一种比上面所示的简单方法更好的方法。一种数值方法是沿着最后一个轴使用,即
。any(axis=-1)
或干脆。any(-1)
,然后使用来获得相应的有效索引,如下所示-
indices = np.argwhere(overlap.any(-1))
请注意,索引
将是一个NumPy数组