Numpy nonzero() 函数
Numpy nonzero() 函数用于返回数组中非零元素的索引。它可以用来快速定位非零元素的位置,这在各种操作中非常有用,例如从数组中屏蔽或提取特定元素。该函数适用于任何形状的数组(一维、二维等)。
在 Numpy nonzero() 函数中,结果是一个数组元组,每个元组对应输入数组 a 的每个维度,包含该维度上非零元素的索引。索引按行优先(C 风格)顺序返回,确保元组中的第一个数组代表行索引,第二个数组代表列索引,对于高维数组,依此类推。
语法
以下是 Numpy nonzero() 函数的语法 -
numpy.nonzero(a)
参数
以下是 Numpy nonzero() 函数的参数 -
- a:输入数组。它可以是任意形状,包含零元素和非零元素。
返回类型
此函数返回输入数组中非零元素的索引。
示例
以下是使用 Numpy nonzero() 函数查找数组中非零元素索引的基本示例 -
import numpy as np my_array = np.array([3, 0, 0, 5, 6, 0]) nonzero_indices = np.nonzero(my_array) print("原始数组:", my_array) print("非零元素的索引:", nonzero_indices)
输出
以下是上述代码的输出 -
原始数组:[3 0 0 5 6 0] 非零元素的索引:(array([0, 3, 4]),)
示例:二维数组中的非零索引
numpy.nonzero() 函数也适用于多维数组。它返回一个数组元组,其中包含每个维度上非零元素的索引。
在下面的示例中,我们查找形状为 (3,3) 的二维数组中的非零索引,并使用 numpy.nonzero() 返回非零元素的索引 -
import numpy as np my_array = np.array([[3, 0, 0], [0, 4, 0], [5, 6, 0]]) nonzero_indices = np.nonzero(my_array) print("原始数组: ", my_array) print("非零元素的索引:", nonzero_indices)
输出
以下是上述代码的输出 -
原始数组: [[3 0 0] [0 4 0] [5 6 0]] 非零元素的索引: (array([0, 1, 2, 2]), array([0, 1, 0, 1]))
示例:从布尔数组中查找索引
这里,我们使用了 Numpy 的 nonzero() 函数来查找二维数组中大于 3 的元素的索引。条件 a > 3 创建一个布尔数组,nonzero() 返回条件为 True 的索引 -
import numpy as np a = np.array([[1, 2, 3], [4, 5, 6], [7, 8, 9]]) Boolean_Array = a > 3 print("布尔数组: ", Boolean_Array) result = np.nonzero(Boolean_Array) print("大于 3 的元素的索引: ", result)
输出
以下是上述代码的输出 -
布尔数组: [[False False False] [ True True True] [ True True True]] 大于 3 的元素的索引: (array([1, 1, 1, 2, 2, 2]), array([0, 1, 2, 0, 1, 2]))