📜  Python中的 numpy.nonzero()(1)

📅  最后修改于: 2023-12-03 15:04:33.537000             🧑  作者: Mango

Python中的 numpy.nonzero()

简介

numpy.nonzero() 是 numpy 库中的一个函数,用于返回一个数组在某一维度上非零元素的索引。

函数原型:

numpy.nonzero(a)

参数:

  • a: 输入的数组或者类数组对象。

返回值:

  • 返回一个包含每一个非零元素索引的 tuple,每个 tuple 包含了数组每一维度上的非零元素索引,例如对于一个 a.shape = (2, 3, 4) 的数组,将返回包含 3 个同样长度(即每一个维度的长度)的数组。
示例
import numpy as np

a = np.array([[0, 1, 0], [1, 0, 1], [0, 1, 0], [1, 0, 1]])
print(a)

输出:

array([[0, 1, 0],
       [1, 0, 1],
       [0, 1, 0],
       [1, 0, 1]])
result = np.nonzero(a)
print(result)

输出:

(array([0, 1, 1, 2, 2, 3, 3]), array([1, 0, 2, 1, 0, 0, 2]))

结果是一个 tuple,包含了两个数组,分别为非零元素的横坐标和纵坐标。

应用

numpy.nonzero() 主要应用于筛选和提取数组非零元素的索引,常用于多维数组和图像数据中。

# 颜色的 R、G、B 值分别存储在 3D 数组(高 * 宽 * 通道数)中
colors = np.array([
    [
        [255, 0, 0], [0, 255, 0], [0, 0, 255]
    ],
    [
        [255, 255, 0], [0, 255, 255], [255, 0, 255]
    ]
])

# 获取所有非黑色像素的坐标
NonZeroIndix = np.nonzero(colors)[0:2]

# 显示结果
print(NonZeroIndix)

输出:

(array([0, 0, 0, 1, 1, 1]), array([0, 1, 2, 0, 1, 2]))

在这个例子中,我们获取了颜色数组中所有非黑色的坐标,方便后续逐个修改或者处理每个非零的像素点。

总结

numpy.nonzero() 是 numpy 库中的一个函数,用于返回一个数组在某一维度上非零元素的索引,常用于筛选和提取多维数组和图像数据中的非零元素索引,用法简单。