【Numpy學習12】邏輯函式
前言
關於邏輯函式的內容,我們在之前11章或多或少都穿插過一些,這裡我們就做一個簡單的整理。
1.真值測試
真值測試包含np.all()
,np.any()
兩種方法:
np.all()
判斷是否全為真:如果是就返回True;否則返回False。np.any()
判斷是否至少有一個為真:如果有就返回True;否則返回False。
舉例:
【例1】真值測試舉例
>>> a = np.random.randint(0,5,10)
>>> b = np.random.randint(0,5,10)
>>> print(a)
[4 1 0 2 4 0 1 0 4 4]
>>> print(b)
[0 2 1 4 4 2 4 2 0 0]
>>> print(np.all(a==a))
True
>>> print(np.all(a==b))
False
>>> print(np.any(a==b))
True
>>> print(np.all([2,np.nan]))
True
其實a==a
,a==b
只是一個前置環節,目的是為了拿到布林型別的陣列便於真值判斷。
而真值判斷的不僅僅是True和False,0和非0等。如上面最後一個例子,numpy中的nan並不是空物件,其實際上是numpy.float64物件,所以我們不能誤認為其是空物件,從而用bool(np.nan)去判斷是否為空值,這是不對的。
2.陣列內容
如上,nan型別並不能通過np.all()
區分,那麼需要有一種方法判斷一個元素是否為nan,所以numpy提供了np.isnan()
來判斷:
【例2】isnan()舉例
>>> print(np.isnan([2,3.0,np.nan,4]))
[False False True False]
3.邏輯運算
我們之前已經見過一些常見的邏輯運算,現在讓我們來歸納一下:
- not 邏輯非
- and 邏輯與
- or 邏輯或
- xor 邏輯異或
>>> a = np.random.randint(0,5,10)>3
>>> print(a)
[False False False True False True False False False True]
>>> b = np.random.randint(0,5,10)<2
>>> print(b)
[False False True False True False False False True True]
>>> print(np.logical_not(a))
[ True True True False True False True True True False]
>>> print(np.logical_and(a,b))
[False False False False False False False False False True]
>>> print(np.logical_or(a,b))
[False False True True True True False False True True]
>>> print(np.logical_xor(a,b))
[False False True True True True False False True False]
4.對照
- greater: >
- greater_equal: >=
- equal: ==
- not_equal: !=
- less: <
- less_equal: <=
- isclose:是否接近
- allclose:是否全部接近
其中它們返回的都是布林型別的ndarray資料型別。
>>> a = np.random.randint(0,5,10)
>>> print(a)
[3 1 4 1 0 0 4 1 0 4]
>>> print(np.greater(a,2))
[ True False True False False False True False False True]
>>> print(np.greater_equal(a,2))
[ True False True False False False True False False True]
>>> print(np.less(a,3))
[False True False True True True False True True False]
>>> print(np.less_equal(a,3))
[ True True False True True True False True True False]
>>> print(np.equal(a,2))
[False False False False False False False False False False]
>>> print(np.not_equal(a,2))
[ True True True True True True True True True True]
>>> print(np.isclose([1e10,1e-8], [1.0001e10,1e-9]))
[False True]
allclose
等同於isclose
+logical_and
的功能,isclose(a,b)
返回True的前提是:
absolute(a - b) <= (atol + rtol * absolute(b))
而atol,rtol有預設值:
分別是1e-05和1e-08。
注意,上面的例子np.isclose([1e10,1e-8], [1.0001e10,1e-9])
特別容易把[1e10,1e-8]和[1.0001e10,1e-9]分別各自計算,而忘了這是numpy的向量化特性,應該a1和b1計算,a2和b2計算,而不是交叉。
相關文章
- numpy學習回顧-數學函式及邏輯函式函式
- NumPy 學習(3): 通用函式函式
- NumPy 數學函式函式
- 二.Excel邏輯函式Excel函式
- 物聯網學習教程——邏輯運算子和邏輯表示式
- Oracle 函式大全(字串函式,數學函式,日期函式,邏輯運算函式,其他函式)Oracle函式字串
- 業務邏輯學習!
- 邏輯迴歸 損失函式邏輯迴歸函式
- NumPy 基礎 (三) - 數學函式函式
- 2.3邏輯迴歸損失函式邏輯迴歸函式
- Lesson12——NumPy 字串函式之 Part1:字串操作函式字串函式
- Numpy 通用函式函式
- 大話Python函式底層邏輯Python函式
- 邏輯迴歸損失函式(cost function)邏輯迴歸函式Function
- MATLAB模糊邏輯工具箱函式Matlab函式
- mysql學習之-邏輯架構MySql架構
- 【AIX 命令學習】建立邏輯卷!AI
- c#學習----邏輯判斷C#
- numpy-random函式random函式
- numpy.where()函式函式
- 不求甚解的深度學習教程(1)-邏輯迴歸基本概念以及代價函式深度學習邏輯迴歸函式
- 邏輯迴歸:損失函式與梯度下降邏輯迴歸函式梯度
- mysql注入方法邏輯運算及常用函式MySql函式
- 計算機程式的思維邏輯 (12) – 函式呼叫的基本原理計算機函式
- 計算機程式的思維邏輯 (12) - 函式呼叫的基本原理計算機函式
- Numpy學習(2)numpy向量化、numpy操作
- numpy、pandas常用函式功能函式
- 函式學習函式
- python-邏輯運算子對應的函式Python函式
- 【Mysql 學習】日期函式函式MySql函式
- spark RDD的學習,filter函式的學習,split函式的學習SparkFilter函式
- 從零開始學習邏輯迴歸邏輯迴歸
- JS邏輯練習JS
- MySQL函式學習(一)-----字串函式MySql函式字串
- NumPy之:ndarray中的函式函式
- Task02:Numpy常用函式函式
- 圖解Numpy的tile函式圖解函式
- numpy中函式nditer的作用函式