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]