numpyのnonzero()関数の詳細な説明



Detailed Explanation Nonzero Function Numpy



np.nonzero関数は、配列配列内の非ゼロ要素の位置(配列インデックス)を取得するためのnumpyの関数です。
非ゼロ(a)
配列aのゼロ以外の要素のインデックス値の配列を返します。

(1)a内のゼロ以外の要素のみにインデックス値があり、それらのゼロ値要素にはインデックス値がありません。
(2)返されるインデックス値配列は、配列の1次元配列を含む2次元タプル配列です。その中で、1次元配列ベクトルの数はaの次元と一致しています。
(3)インデックス値配列の各配列は、1つの次元からのインデックス値を記述します。たとえば、aが2次元配列の場合、インデックス値配列には2つの配列があります。最初の配列は行ディメンションのインデックス値を記述し、2番目の配列は列ディメンションのインデックス値を記述します。
(4)np.transpose(np.nonzero(x))
この関数は、ゼロ以外の各要素のインデックス値をさまざまな次元で記述することができます。
(5)a [nonzero(a)]によってaのすべての非ゼロ値を取得します
一言で言えば、nonzero()関数は、配列内の非ゼロ要素のインデックスを返します。配列が1次元の場合、返される配列は1次元配列です。非ゼロ要素のインデックス。配列が2次元の場合、返されるのは2次元配列です。ここで、最初の次元は非ゼロ要素のインデックスの最初の次元に対応し、2番目の次元は2次元に対応します。ゼロ以外の要素のインデックスです。2番目の次元。
簡単に言うと、配列aが2次元配列の場合、nonzero()は2次元配列を返し、その配列を行列として書き込む場合は、垂直方向に読み取ります。のゼロ以外の要素の完全なインデックスを取得します。
ここではいくつかの例を示します。



1次元配列の場合:

>>> import numpy as np >>> a = [0,2,3] >>> b = np.nonzero(a) >>> b (array([1, 2], dtype=int64),) >>> np.array(b).ndim 2 >>>

2次元配列の場合:



>>> a = np.array([[0,0,3],[0,0,0],[0,0,9]]) >>> b = np.nonzero(a) >>> b (array([0, 2], dtype=int64), array([2, 2], dtype=int64)) >>> np.array(b).ndim 2 >>> np.transpose(np.nonzero(a)) array([[0, 2], [2, 2]], dtype=int64) >>>

機械学習戦闘コードスニペット:

# Def binSplitDataSet(dataSet, feature, value): # three parameters: the data set, the feature to be sliced, and a value of the feature Mat0 = dataSet[nonzero(dataSet[:,feature] > value)[0],:] # Array filtering mat1 = dataSet[nonzero(dataSet[:,feature] >> testMat=mat(eye(4)) >>> testMat matrix([[ 1., 0., 0., 0.], [ 0., 1., 0., 0.], [ 0., 0., 1., 0.], [ 0., 0., 0., 1.]]) >>> nonzero(testMat[:,1] > 0.5) (array([1], dtype=int64), array([0], dtype=int64)) >>> nonzero(testMat[:,1] > 0.5)[0] array([1], dtype=int64) >>> testMat[nonzero(testMat[:,1] > 0.5)[0],:] matrix([[ 0., 1., 0., 0.]]) >>> testMat[nonzero(testMat[:,1] > 0.5)[0],:][0] matrix([[ 0., 1., 0., 0.]]) >>> testMat[nonzero(testMat[:,1] >> testMat[nonzero(testMat[:,1] <= 0.5)[0],:][0] # There is a problem with the source code (the last [0] should be removed) matrix([[ 1., 0., 0., 0.]])>>>