Numpy.nonzero() 詳解 numpy module中 nonzero()函式
最近看到《機器學習實戰》第6章PlattSMO演算法時, 遇到了numpy.nonzero()函式, 糾結了很久才看懂用法。
簡記之,共以後自己和他人蔘考。
numpy.nonzero(a)[source]Return the indices of the elements that are non-zero.
Returns a tuple of arrays, one for each dimension of a, containing the indices of the non-zero elements in that dimension. The corresponding non-zero values can be obtained with:
a[nonzero(a)]
To group the indices by element, rather than dimension, use:
transpose(nonzero(a))
The result of this is always a 2-D array, with a row for each non-zero element.
Parameters: |
a : array_like
|
---|---|
Returns: |
tuple_of_arrays : tuple
|
簡單翻譯:
numpy函式返回非零元素的目錄。
返回值為元組, 兩個值分別為兩個維度, 包含了相應維度上非零元素的目錄值。 可以通過a[nonzero(a)]來獲得所有非零值。
個人解釋, nonzero(a) 將對矩陣a的所有非零元素, 分別安裝兩個維度, 一次返回其在各維度上的目錄值。
如果 a=mat([ [1,0,0],
[0,0,0],
[0,0,0]])
則 nonzero(a) 返回值為 (array([0]), array([0])) , 因為矩陣a只有一個非零值, 在第0行, 第0列。
如果 a=mat([ [1,0,0],
[1,0,0],
[0,0,0]])
則 nonzero(a) 返回值為 (array([0, 1]), array([0, 0])) , 因為矩陣a只有兩個非零值, 在第0行、第0列,和第1行、第0列。所以結果元組中,第一個行維度資料為(0,1) 元組第二個列維度都為(0,0)。