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