Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/sql-server/22.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python NumPy:三维非零的索引(图像掩蔽)_Python_Numpy - Fatal编程技术网

Python NumPy:三维非零的索引(图像掩蔽)

Python NumPy:三维非零的索引(图像掩蔽),python,numpy,Python,Numpy,小结:我正在寻找类似于“numpy.nonzero”的东西,但有一个转折点。我想搜索所有包含第三维非零元素的索引。如果存在任何元素,请给我该维度的索引 详细信息:我的项目包括接收、解析和输出修改后的图像文件。它首先将图像转换为3D numpy阵列。使用该文件将创建一个掩码。接下来,它使用'numpy.bitwise_and'查找掩码的位模式与源图像重叠的位置,然后根据这些索引执行操作 mask = create_mask(self.image) # spare array, same size

小结:我正在寻找类似于“numpy.nonzero”的东西,但有一个转折点。我想搜索所有包含第三维非零元素的索引。如果存在任何元素,请给我该维度的索引

详细信息:我的项目包括接收、解析和输出修改后的图像文件。它首先将图像转换为3D numpy阵列。使用该文件将创建一个掩码。接下来,它使用'numpy.bitwise_and'查找掩码的位模式与源图像重叠的位置,然后根据这些索引执行操作

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数组