NumPy 函数

NumPy nonzero() 函数返回非零元素的索引。返回值是一个数组元组,一个数组对应 a 的每个维度,包含该维度中非零元素的索引。 a 中的值始终按行优先、C 风格顺序进行测试和返回。

语法

numpy.nonzero(a) 

参数

a必填。 指定输入数组。

返回值

返回非零元素的索引.

示例:

在下面的示例中,nonzero()函数用于查找所有非零元素的索引。

import numpy as np
Arr = np.array([10, 20, 0, 0, 50, 0, 70])

print("数组为:")
print(Arr)

#所有非零元素的索引
x = np.nonzero(Arr)
print("\n非零元素的索引:")
print(x)

#显示所有非零元素
print("\n所有非零元素:")
print(Arr[x]) 

上述代码的输出将是:

数组为:
[10 20  0  0 50  0 70]

非零元素的索引:
(array([0, 1, 4, 6]),)

所有非零元素:
[10 20 50 70] 

示例:

同样,可以从二维数组中找出非零元素使用 nonzero() 函数。

import numpy as np
Arr = np.array([[1, 2, 0], 
                [0, 5, 0], 
                [7, 0, 9]])

print("数组为:")
print(Arr)

#所有非零元素的索引
x = np.nonzero(Arr)
print("\n非零元素的索引:")
print(x)

#显示所有非零元素
print("\n所有非零元素:")
print(Arr[x]) 

上述代码的输出将是:

数组为:
[[1 2 0]
 [0 5 0]
 [7 0 9]]

非零元素的索引:
(array([0, 0, 1, 2, 2]), array([0, 1, 1, 0, 2]))

所有非零元素:
[1 2 5 7 9] 

示例:

可以将条件应用于nonzero()函数,如下例所示。

import numpy as np
Arr = np.array([90, 80, 10, 20, 50])

print("数组为:")
print(Arr)

#所有大于25的元素的索引
x = np.nonzero(Arr > 25)
print("\n大于25的元素索引:")
print(x)

#显示所有大于25的元素
print("\n所有大于 25 的元素:")
print(Arr[x]) 

上述代码的输出将是:

数组为:
[90 80 10 20 50]

大于25的元素索引:
(array([0, 1, 4]),)

所有大于 25 的元素:
[90 80 50]