App下載

怎么使用numpy的nonzero 找出非0元素?

半顆心的暖 2021-08-13 14:44:16 瀏覽數(shù) (4333)
反饋

在一個矩陣中,0是一種特殊的存在,所以為了對數(shù)據(jù)區(qū)分有時候我們需要找出矩陣中的非零元素。numpy是一種常用的矩陣運算的python庫。numpy使用nonzero可以輕松的找出非零元素。那么具體該怎么操作呢,閱讀下文你會得到答案。

直接上代碼吧~

import numpy as np
a = np.array([[30,40,70],[80,20,10],[50,90,60]])
print(a)
print(np.nonzero(a))

[[30 40 70]
 [80 20 10]
 [50 90 60]]
(array([0, 0, 0, 1, 1, 1, 2, 2, 2], dtype=int64), array([0, 1, 2, 0, 1, 2, 0, 1, 2], dtype=int64))

第一個array為x軸 第二個array為y軸

補充:【Numpy學習】python查找矩陣中不為0元素的索引(np.nonzero())

在用矩陣分解方法做模型時,需要對模型的結果做驗證。

在驗證過程中需要mask訓練集、驗證集和測試集。

這時候就需要原矩陣S SS中不為0元素和為0元素的索引值,這個方法在matlab中是find方法,在用python實現(xiàn)時就需要np.nonzero()。

下面看一段代碼:

import numpy as np
a = np.arange(12).reshape(3, 4)
print(a)
[[ 0  1  2  3]
 [ 4  5  6  7]
 [ 8  9 10 11]]
print(np.nonzero(a))
(array([0, 0, 0, 1, 1, 1, 1, 2, 2, 2, 2]), array([1, 2, 3, 0, 1, 2, 3, 0, 1, 2, 3]))

值得注意的是np.nonzero(a)輸出的是兩個array第一個array中的值指的是行,第二個指的是列。

如0,1表明第0行第一列的值不為0。

以上就是numpy找出非0元素的全部內容,希望能給大家一個參考,也希望大家多多支持W3Cschool



0 人點贊