nonzero
直接看例子:
In [83]: x = np.array([[1,0,0], [0,2,0], [1,1,0]]) In [84]: x.shape Out[84]: (3L, 3L) # 3*3的array,維度為2 In [85]: x Out[85]: array([[1, 0, 0], [0, 2, 0], [1, 1, 0]]) In [86]: np.nonzero(x) Out[86]: (array([0, 1, 2, 2], dtype=int64), array([0, 1, 0, 1], dtype=int64))
# 返回的是x中的不為0的元素坐標(坐標從每個array中選一個組成) # 返回的tuple與x的維度相同,tuple中第一個元素選一個,第二個元素選對應的那個,形成了一個坐標: # x[0,0], x[1,1], x[2,0], x[2,1] 這幾個為非零
In [87]: x = x == 0 In [88]: x Out[88]: array([[False, True, True], [ True, False, True], [False, False, True]], dtype=bool) In [89]: np.nonzero(x) Out[89]: (array([0, 0, 1, 1, 2], dtype=int64), array([1, 2, 0, 2, 2], dtype=int64)) # 看第一個元素x[0,1]是True,意味着false在這個函數這為0
isnan:
In [90]: y = [np.log(-1.),1.,np.log(0)] E:\Anaconda2\Scripts\ipython-script.py:1: RuntimeWarning: invalid value encountered in log if __name__ == '__main__': E:\Anaconda2\Scripts\ipython-script.py:1: RuntimeWarning: divide by zero encountered in log if __name__ == '__main__': In [91]: y Out[91]: [nan, 1.0, -inf] In [92]: np.isnan(y) Out[92]: array([ True, False, False], dtype=bool) # 可以看到isnan返回的是數組對應的相同大小的布爾型數組