您好,登錄后才能下訂單哦!
這篇文章主要介紹了NumPy之Ndarray運(yùn)算函數(shù)操作方法有哪些的相關(guān)知識(shí),內(nèi)容詳細(xì)易懂,操作簡(jiǎn)單快捷,具有一定借鑒價(jià)值,相信大家閱讀完這篇NumPy之Ndarray運(yùn)算函數(shù)操作方法有哪些文章都會(huì)有所收獲,下面我們一起來看看吧。
NumPy中的比較運(yùn)算符(>、<、==、!=、>=、<=)用于比較兩個(gè)數(shù)組的元素是否滿足一定的關(guān)系,結(jié)果是一個(gè)布爾類型的數(shù)組,其中 True 表示相應(yīng)位置的元素滿足條件,F(xiàn)alse 表示不滿足。
常用的比較運(yùn)算符:
運(yùn)算符 | 說明 |
---|---|
大于(>) | 判斷左側(cè)的值是否大于右側(cè)的值 |
小于(<) | 判斷左側(cè)的值是否小于右側(cè)的值 |
等于(==) | 判斷左側(cè)的值是否等于右側(cè)的值 |
不等于(!=) | 判斷左側(cè)的值是否不等于右側(cè)的值 |
大于等于(>=) | 判斷左側(cè)的值是否大于或等于右側(cè)的值 |
小于等于(<=) | 判斷左側(cè)的值是否小于或等于右側(cè)的值 |
import numpy as np a = np.array([1, 2, 3]) b = np.array([2, 2, 2]) print(a > b) # 輸出:[False False True] print(a < b) # 輸出:[ True False False] print(a == b) # 輸出:[False True False] print(a != b) # 輸出:[ True False True] print(a >= b) # 輸出:[False True True] print(a <= b) # 輸出:[ True True False]
import numpy as np # 生成1-20范圍 4行3列的二維數(shù)組 a = np.random.randint(1, 20, (4, 3)) print(a) print() # 取出前2行的前2列用于邏輯判斷 b = a[:2, 0:2] # 邏輯判斷, 如果大于10就標(biāo)記為True 否則為False print(b > 10) print() # BOOL賦值, 將滿足條件的設(shè)置為指定的值-布爾索引 b[b > 10] = 1 print(b)
[[ 5 16 5] [12 9 13] [ 8 18 11] [ 4 19 17]] [[False True] [ True False]] [[5 1] [1 9]]
邏輯運(yùn)算符(&(與)、|(或)、^(異或)、~(非)):用于對(duì)布爾數(shù)組進(jìn)行邏輯運(yùn)算,返回一個(gè)布爾數(shù)組。
其中 "&" 運(yùn)算符表示邏輯與,當(dāng)所有操作數(shù)均為 True 時(shí)結(jié)果才為 True,否則結(jié)果為 False。
import numpy as np a = np.array([True, False, True]) b = np.array([False, True, True]) c = a & b # 對(duì) a 和 b 進(jìn)行與運(yùn)算,返回一個(gè)布爾數(shù)組 print(c) # [False False True]
"|" 運(yùn)算符表示邏輯或,在任意一個(gè)操作數(shù)為 True 時(shí)結(jié)果就為 True,只有所有操作數(shù)均為 False 時(shí)結(jié)果才為 False。
import numpy as np a = np.array([True, False, True]) b = np.array([False, True, True]) c = a | b print(c) # [ True True True]
"^" 運(yùn)算符表示邏輯異或,在兩個(gè)操作數(shù)相同時(shí)結(jié)果為 False,在操作數(shù)不同時(shí)結(jié)果為 True。
import numpy as np a = np.array([True, False, True]) b = np.array([False, True, True]) c = a ^ b print(c) # [ True True False]
"~" 運(yùn)算符表示邏輯非,對(duì)操作數(shù)取反。
import numpy as np a = np.array([True, False, True]) b = np.array([False, True, True]) c = ~a print(c) # False True False] c = ~b print(c) # [ True False False]
NumPy庫中的邏輯運(yùn)算函數(shù):
函數(shù)名 | 對(duì)應(yīng)運(yùn)算符 | 說明 |
---|---|---|
logical_and() | & | 對(duì)兩個(gè)數(shù)組執(zhí)行邏輯AND運(yùn)算 |
logical_or() | 丨 | 對(duì)兩個(gè)數(shù)組執(zhí)行邏輯OR運(yùn)算 |
logical_not() | ~ | 對(duì)數(shù)組進(jìn)行邏輯NOT運(yùn)算 |
logical_xor() | ^ | 對(duì)數(shù)組進(jìn)行邏輯異或XOR運(yùn)算 |
logical_and()函數(shù)函數(shù)接受兩個(gè)參數(shù),返回一個(gè)布爾類型數(shù)組。
np.logical_and(x1, x2) :對(duì)兩個(gè)數(shù)組 x1 和 x2 中的每個(gè)元素進(jìn)行邏輯與運(yùn)算,并將結(jié)果以一個(gè)新的布爾類型數(shù)組返回。對(duì)于同一位置上的元素,只有在都為 True 時(shí),結(jié)果才為 True;否則,結(jié)果為 False。
import numpy as np a = np.array([True, True, False, False]) b = np.array([True, False, True, False]) c = np.logical_and(a, b) print(c) # True False False False] # 大于0.5并且小于3的,換為1,否則為0 c = np.array([1, 2, 3, 4, 5]) d = np.logical_and(c > 0.5, c < 3) print(d) # [ True True False False False] print(np.where(d, 1, 0)) # [1 1 0 0 0]
np.logical_or()函數(shù)接受兩個(gè)參數(shù),返回一個(gè)布爾類型數(shù)組。
np.logical_or(x1, x2) :對(duì)兩個(gè)數(shù)組 x1 和 x2 中的每個(gè)元素進(jìn)行邏輯或運(yùn)算,并將結(jié)果以一個(gè)新的布爾類型數(shù)組返回。對(duì)于同一位置上的元素,只有在都為 False 時(shí),結(jié)果才為 False;否則,結(jié)果為 True。
import numpy as np a = np.array([True, True, False, False]) b = np.array([True, False, True, False]) c = np.logical_or(a, b) print(c) # [ True True True False] # 大于0.5并且小于3的,換為1,否則為0 c = np.array([1, 2, 3, 4, 5]) d = np.logical_or(c > 0.5, c < 3) print(d) # [ True True True True True] print(np.where(d, 1, 0)) # [1 1 1 1 1]
np.logical_not(x):對(duì) x 中的元素進(jìn)行邏輯非(not)運(yùn)算,返回一個(gè)新的數(shù)組。
import numpy as np a = np.array([True, False, True]) print(np.logical_not(a))# [False True False]
np.logical_xor(x1, x2):對(duì) x1 和 x2 中的元素進(jìn)行邏輯異或(xor)運(yùn)算,返回一個(gè)新的數(shù)組。
import numpy as np a = np.array([True, False, True]) b = np.array([False, True, True]) print(np.logical_xor(a, b)) # [ True True False]
np.all()函數(shù)用于測(cè)試數(shù)組中的所有元素是否都是True
import numpy as np a = np.array([1, 2, 3, 4]) b = np.array([0, 2, 3, 4]) print(np.all(a)) # True,因?yàn)樗性囟疾粸? print(np.all(b)) # False,因?yàn)榈谝粋€(gè)元素為0 c = np.array([[1, 2, 3], [4, 5, 6]]) print(np.all(c)) # True,因?yàn)樗性囟疾粸? # axis=0:沿著列方向測(cè)試所有元素是否都為True print(np.all(c, axis=0)) # [True True False] # axis=1:沿著行方向測(cè)試所有元素是否都為True print(np.all(c, axis=1)) # [True False] d = np.array([True, False, True]) print(np.all(d)) # 輸出 False
np.any()函數(shù)用于測(cè)試給定數(shù)組的任意元素是否為True。它返回一個(gè)布爾值,表示數(shù)組中是否有任意一個(gè)元素為True。
import numpy as np a = np.array([0, 1, 2]) print(np.any(a)) # 輸出 True b = np.array([False, False, False]) print(np.any(b)) # 輸出 False c = np.array([[True, False], [False, False]]) print(np.any(c)) # 輸出 True d = np.array([[1, 2, 3], [4, 5, 6], [7, 8, 9]]) print(d[0:2, :2]) # [[1 2] [4 5]] print(np.any(d[0:2, :2] > 5 ))
np.isnan(x)函數(shù)判斷一個(gè)數(shù)是否為 NaN (not a number)
import numpy as np a = np.array([1, 2, np.nan, 4]) print(np.isnan(a)) # [False False True False]
np.isinf(x)函數(shù)判斷一個(gè)數(shù)是否為正無窮或負(fù)無窮
import numpy as np b = np.array([1, 2, np.inf, -np.inf]) print(np.isinf(b)) # [False False True True]
np.isfinite(x)函數(shù)判斷一個(gè)數(shù)是否為有限的數(shù)值
import numpy as np c = np.array([1, 2, np.nan, np.inf, -np.inf]) print(np.isfinite(c)) # [ True True False False False]
np.allclose(a, b)函數(shù)判斷兩個(gè)數(shù)組是否在一定誤差范圍內(nèi)相等
import numpy as np a = np.array([[1, 2], [3, 4]]) b = np.array([[1.01, 2.01], [3.01, 4.01]]) print(np.allclose(a, b)) # False print(np.allclose(a, b, rtol=0.02)) # True
np.array_equal(a, b)函數(shù)判斷兩個(gè)數(shù)組是否完全相同
import numpy as np a = np.array([1, 2, 3]) b = np.array([1, 2, 3]) print(np.array_equal(a, b)) # True c = np.array([1, 2, 3]) d = np.array([1, 2, 4]) print(np.array_equal(c, d)) # False
np.greater(x, y)函數(shù) 對(duì)比兩個(gè)數(shù)組中的元素,返回一個(gè)表示 x 是否大于 y 的布爾數(shù)組
import numpy as np a = np.array([1, 2, 3]) b = np.array([2, 2, 2]) print(np.greater(a, b)) # [False False True]
np.less(x, y)函數(shù)對(duì)比兩個(gè)數(shù)組中的元素,返回一個(gè)表示 x 是否小于 y 的布爾數(shù)組
import numpy as np a = np.array([1, 2, 3]) b = np.array([2, 2, 2]) print(np.less(a, b)) # [ True False False]
np.equal(x, y)函數(shù)對(duì)比兩個(gè)數(shù)組中的元素,返回一個(gè)表示 x 是否等于 y 的布爾數(shù)組
import numpy as np a = np.array([1, 2, 3]) b = np.array([1, 3, 3]) print(np.equal(a, b)) # [ True False True]
NumPy中可以使用條件篩選函數(shù)進(jìn)行條件選擇操作。
numpy.where(condition, x, y)
where()函數(shù)說明:
np.where函數(shù)用于根據(jù)給定條件返回輸入數(shù)組中滿足條件的元素的索引或值。
參數(shù):
condition:一個(gè)布爾型數(shù)組或條件表達(dá)式,用于指定篩選條件
x:滿足條件時(shí)的返回值
y:不滿足條件時(shí)的返回值
使用np.where函數(shù)找出數(shù)組a中大于3的元素的索引,并且將滿足條件的元素從a和b對(duì)應(yīng)位置的值中取出來
import numpy as np a = np.array([1, 2, 3, 4, 5]) b = np.array([10, 20, 30, 40, 50]) # 返回滿足條件的元素的索引 indices = np.where(a > 3) print(indices) # (array([3, 4], dtype=int64),) # 返回滿足條件的元素的值 values = np.where(a > 3, a, b) # 根據(jù)條件 (a > 3) 可以得到一個(gè)布爾類型的數(shù)組 [False False True True True]。對(duì)于這個(gè)數(shù)組中每個(gè)元素,如果是 True 則返回 a 數(shù)組中對(duì)應(yīng)的元素,否則返回 b 數(shù)組中對(duì)應(yīng)的元素。所以最終結(jié)果是 [10 20 30 4 5]。 print(values) # [10 20 30 4 5]
numpy.choose 函數(shù)可以根據(jù)給定的索引數(shù)組從一組備選的值中進(jìn)行選擇。
numpy.choose(a, choices, out=None, mode='raise')
a:表示從中選擇值的整數(shù)數(shù)組,每個(gè)值必須是非負(fù)的且小于 len(choices) choices:表示備選值的序列??梢允橇斜怼⒃M或數(shù)組等對(duì)象,且每個(gè)對(duì)象的形狀必須相同 out:可選參數(shù),表示輸出數(shù)組 mode:表示邊界處理方式,默認(rèn)為 'raise'(拋出異常),還可以設(shè)置為 'wrap'(循環(huán))或 'clip'(剪切)
import numpy as np # 定義選擇數(shù)組a和備選值數(shù)組choices a = np.array([0, 1, 2, 2]) choices = (10, 11, 12, 13) # 使用 choose 函數(shù)進(jìn)行選擇 # 從 choices 中根據(jù) a 中的索引進(jìn)行選擇,得到最終的結(jié)果數(shù)組。 result = np.choose(a, choices) print(result) # 輸出 [10 11 12 12]
numpy.select函數(shù)則是一種更加靈活的選擇方式,它可以根據(jù)多個(gè)條件來進(jìn)行選擇。其函數(shù)簽名為:
numpy.select(condlist, choicelist, default=0)
condlist:表示條件列表的序列。每個(gè)條件都是一個(gè)布爾數(shù)組,且所有條件必須具有相同形狀。
choicelist:表示備選值的序列。每個(gè)備選值也必須具有相同的形狀
default:可選參數(shù),表示默認(rèn)值
import numpy as np # 定義條件列表condlist和備選值列表choicelist condlist = [np.array([True, False]), np.array([False, True])] choicelist = [np.array([1, 2]), np.array([3, 4])] # 使用 select 函數(shù)進(jìn)行選擇 # 使用 numpy.select 函數(shù)根據(jù)條件列表從備選值列表中進(jìn)行選擇,得到最終的結(jié)果數(shù)組 result = np.select(condlist, choicelist) # 第一個(gè)條件為 [True, False],因此選擇了第一個(gè)備選值 [1, 2] 中的第一個(gè)元素 1 # 第二個(gè)條件為 [False, True],因此選擇了第二個(gè)備選值 [3, 4] 中的第二個(gè)元素 4。最終得到的結(jié)果為 [1, 4] print(result) # 輸出 [1 4]
統(tǒng)計(jì)運(yùn)算是指對(duì)一組數(shù)據(jù)進(jìn)行統(tǒng)計(jì)分析的運(yùn)算,常見的統(tǒng)計(jì)運(yùn)算包括:
求和(Sum):將一組數(shù)值加起來得到總和。 平均數(shù)(Mean):將一組數(shù)值相加后除以數(shù)量,得到平均值。 中位數(shù)(Median):將一組數(shù)值按從小到大的順序排列,取中間的那個(gè)數(shù)值作為中位數(shù)。 眾數(shù)(Mode):一組數(shù)值中出現(xiàn)次數(shù)最多的數(shù)值。 方差(Variance):表示數(shù)據(jù)集合各項(xiàng)數(shù)據(jù)與其平均數(shù)之差平方的平均數(shù)。 標(biāo)準(zhǔn)差(Standard Deviation):是方差的正平方根。 百分位數(shù)(Percentile):將一組數(shù)值按從小到大的順序排列,然后找出某個(gè)百分比所處的位置
numbers = [1, 2, 3, 4, 5] total = sum(numbers) print(total) # 輸出:15
numbers = [1, 2, 3, 4, 5] average = sum(numbers) / len(numbers) print(average) # 輸出:3.0
import statistics numbers = [1, 2, 3, 4, 5] median = statistics.median(numbers) print(median) # 輸出:3
from collections import Counter numbers = [1, 2, 3, 3, 4, 4, 4, 5, 5] counter = Counter(numbers) mode = counter.most_common(1)[0][0] print(mode) # 輸出:4
import statistics numbers = [1, 2, 3, 4, 5] variance = statistics.variance(numbers) print(variance) # 輸出:2.5
import statistics numbers = [1, 2, 3, 4, 5] stdev = statistics.stdev(numbers) print(stdev) # 輸出:1.5811388300841898
import numpy as np numbers = [1, 2, 3, 4, 5] percentile = np.percentile(numbers, 50) print(percentile) # 輸出:3.0
函數(shù)名 | 說明 |
---|---|
numpy.add() | 將兩個(gè)數(shù)組相加 |
numpy.subtract() | 從第一個(gè)數(shù)組中減去第二個(gè)數(shù)組 |
numpy.multiply() | 將兩個(gè)數(shù)組相乘 |
numpy.divide() | 將第一個(gè)數(shù)組除以第二個(gè)數(shù)組 |
numpy.power() | 對(duì)第一個(gè)數(shù)組中的每個(gè)元素求指數(shù) |
numpy.mod() | 計(jì)算兩個(gè)數(shù)組的元素之間的模數(shù)(余數(shù)) |
numpy.abs() | 返回?cái)?shù)組中每個(gè)元素的絕對(duì)值 |
numpy.exp() | 對(duì)數(shù)組中的每個(gè)元素進(jìn)行指數(shù)運(yùn)算 |
numpy.log() | 對(duì)數(shù)組中的每個(gè)元素進(jìn)行自然對(duì)數(shù)運(yùn)算 |
兩個(gè)數(shù)組相加
import numpy as np a = np.array([1, 2, 3]) b = np.array([4, 5, 6]) c = np.add(a, b) print(c) # [5 7 9]
NumPy 提供了許多數(shù)學(xué)函數(shù),用于對(duì)數(shù)組進(jìn)行各種數(shù)學(xué)運(yùn)算。
函數(shù)名 | 說明 |
---|---|
numpy.sin() | 計(jì)算數(shù)組中每個(gè)元素的正弦值。 |
numpy.cos() | 計(jì)算數(shù)組中每個(gè)元素的余弦值。 |
numpy.tan() | 計(jì)算數(shù)組中每個(gè)元素的正切值。 |
numpy.arcsin() | 計(jì)算數(shù)組中每個(gè)元素的反正弦值。 |
numpy.arccos() | 計(jì)算數(shù)組中每個(gè)元素的反余弦值。 |
numpy.arctan() | 計(jì)算數(shù)組中每個(gè)元素的反正切值。 |
numpy.exp() | 計(jì)算數(shù)組中每個(gè)元素的指數(shù)函數(shù)值。 |
numpy.log() | 計(jì)算數(shù)組中每個(gè)元素的自然對(duì)數(shù)值。 |
numpy.log10() | 計(jì)算數(shù)組中每個(gè)元素的以 10 為底的對(duì)數(shù)值。 |
計(jì)算數(shù)組中每個(gè)元素的正弦值:
import numpy as np arr = np.array([0, np.pi/2, np.pi]) sin_arr = np.sin(arr) print(sin_arr) # [0.0000000e+00 1.0000000e+00 1.2246468e-16]
NumPy提供了一些字符串函數(shù),用于處理數(shù)組中的字符串元素。
函數(shù)名 | 說明 |
---|---|
numpy.char.add() | 將兩個(gè)字符串連接為一個(gè)字符串 |
numpy.char.multiply() | 將字符串重復(fù)多次 |
numpy.char.lower() | 將字符串中的字母轉(zhuǎn)換為小寫 |
numpy.char.upper() | 將字符串中的字母轉(zhuǎn)換為大寫 |
numpy.char.title() | 將字符串中每個(gè)單詞的首字母大寫 |
numpy.char.split() | 將字符串分割成子字符串,并返回一個(gè)數(shù)組 |
numpy.char.strip() | 從字符串的開頭和結(jié)尾刪除空格或指定字符 |
numpy.char.replace() | 使用另一個(gè)字符串替換字符串中的指定字符 |
將兩個(gè)字符串連接起來:
import numpy as np a = np.array(['Hello', 'world']) b = np.array(['!', '?']) c = np.char.add(a, b) print(c) # ['Hello!' 'world?']
NumPy 提供了許多排序函數(shù),用于對(duì)數(shù)組進(jìn)行排序。
函數(shù)名 | 說明 |
---|---|
numpy.sort() | 對(duì)數(shù)組進(jìn)行排序 |
numpy.argsort() | 返回?cái)?shù)組中元素排序后的索引 |
numpy.lexsort() | 對(duì)多個(gè)序列進(jìn)行排序 |
numpy.partition() | 按照指定順序?qū)?shù)組進(jìn)行分區(qū) |
numpy.argpartition() | 返回將數(shù)組分成多個(gè)部分所需的索引 |
對(duì)數(shù)組進(jìn)行排序,并返回排序后的索引:
import numpy as np arr = np.array([3, 8, 1, 6, 0]) sorted_indices = np.argsort(arr) print(sorted_indices) # [4 2 0 3 1]
關(guān)于“NumPy之Ndarray運(yùn)算函數(shù)操作方法有哪些”這篇文章的內(nèi)容就介紹到這里,感謝各位的閱讀!相信大家對(duì)“NumPy之Ndarray運(yùn)算函數(shù)操作方法有哪些”知識(shí)都有一定的了解,大家如果還想學(xué)習(xí)更多知識(shí),歡迎關(guān)注億速云行業(yè)資訊頻道。
免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長(zhǎng)郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。