一、Nonzero概述
Nonzero函數是一種用於按照給定條件篩選出數組中非零元素的函數。它會返回給定數組的所有非零元素的下標,用於後續的操作或者統計。具體實現的代碼如下:
import numpy as np arr = np.array([1, 0, 3, 0, 0, 7]) result = np.nonzero(arr) print(result)
上述代碼會輸出一個元組,其中存儲了所有非零元素的下標。比如對於上述代碼中的arr,輸出的結果為(array([0, 2, 5],))。
二、Nonzero的應用
1、篩選數組中非零元素
在實際開發過程中,我們經常需要對數組進行篩選,只選取其中非零的元素。這時候,我們可以利用Nonzero函數來實現。比如:
import numpy as np arr = np.array([1, 0, 3, 0, 0, 7]) result = arr[np.nonzero(arr)] print(result)
上述代碼中的arr會被篩選,只留下其中的非零元素。輸出的結果為[1, 3, 7]。
2、統計數組中非零元素的個數
有時候,我們需要統計一個數組中所有非零元素的個數。這時候,我們同樣可以利用Nonzero函數來實現。比如:
import numpy as np arr = np.array([1, 0, 3, 0, 0, 7]) result = len(np.nonzero(arr)[0]) print(result)
上述代碼中的arr會被統計,其中所有的非零元素的個數會被輸出。輸出結果為3。
3、數組中非零元素的賦值
非零元素的賦值也是一個常見的操作。比如,我們需要將一個數組中的所有非零元素都賦值為1。這時候,我們可以通過Nonzero函數來找到所有的非零元素,然後再進行賦值操作。代碼示例如下:
import numpy as np arr = np.array([1, 0, 3, 0, 0, 7]) index = np.nonzero(arr) arr[index] = 1 print(arr)
上述代碼中的arr會被賦值,其中所有的非零元素都會被賦值為1。輸出結果為[1, 0, 1, 0, 0, 1]。
三、Nonzero使用注意事項
1、返回值類型
Nonzero函數返回的是一個元組(tuple),其中每個元素都是一個數組(array)。每個數組代表對應維度上非零元素的下標。如果數組是一維的,則此時元組中只有一個元素;如果數組是二維的,則此時元組中有兩個元素,分別代表行和列上的非零元素下標。
2、返回值順序
在進行統計、篩選、賦值等操作時,需要注意返回值的順序。因為Nonzero函數返回的是一個元組,元組中每個元素的下標都與原數組中的下標相對應。所以在進行操作時,需要注意元組中每個數組的順序,尤其是在多維數組中。
3、與where函數的區別
Nonzero函數和where函數有着類似的功能,都是用於篩選出滿足某種條件的元素。但是兩者存在着一些區別。where函數返回的是一個坐標元組,可以用於實現數組的通用賦值操作。而Nonzero函數返回的是下標元組,只能用於索引和切片操作。另外,where函數還可以用於多個數組的條件篩選。
總結
Nonzero函數是一個基礎的Numpy函數,可以用於篩選、統計和賦值等操作。在實際開發過程中,特別是在對數組進行篩選、統計等操作時,可以用Nonzero函數來簡化代碼的編寫,提高代碼的效率。
原創文章,作者:小藍,如若轉載,請註明出處:https://www.506064.com/zh-hk/n/188953.html