溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊(cè)×
其他方式登錄
點(diǎn)擊 登錄注冊(cè) 即表示同意《億速云用戶服務(wù)條款》

NumPy之Ndarray運(yùn)算函數(shù)操作方法有哪些

發(fā)布時(shí)間:2023-04-28 15:12:47 來源:億速云 閱讀:105 作者:iii 欄目:開發(fā)技術(shù)

這篇文章主要介紹了NumPy之Ndarray運(yùn)算函數(shù)操作方法有哪些的相關(guān)知識(shí),內(nèi)容詳細(xì)易懂,操作簡(jiǎn)單快捷,具有一定借鑒價(jià)值,相信大家閱讀完這篇NumPy之Ndarray運(yùn)算函數(shù)操作方法有哪些文章都會(huì)有所收獲,下面我們一起來看看吧。

    NumPy比較運(yùn)算符

    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]]

    NumPy邏輯運(yùn)算符

    邏輯運(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ù)

    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ù)

    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ù)

    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]

    logical_not()函數(shù)

    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]

    logical_xor()函數(shù)

    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]

    NumPy判斷函數(shù)

    all(a)函數(shù)

    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

    any(a)函數(shù)

    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] &gt; 5 ))

    isnan(x)函數(shù)

    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]

    isinf(x)函數(shù)

    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]

    isfinite(x)函數(shù)

    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]

    allclose(a, b)函數(shù)

    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

    array_equal(a, b)函數(shù)

    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

    greater(x, y)函數(shù)

    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]

    less(x, y)函數(shù)

    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]

    equal(x, y)函數(shù)

    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ù)

    NumPy中可以使用條件篩選函數(shù)進(jìn)行條件選擇操作。

    where()函數(shù)

    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 &gt; 3)
    print(indices) # (array([3, 4], dtype=int64),)
    # 返回滿足條件的元素的值
    values = np.where(a &gt; 3, a, b)
    # 根據(jù)條件 (a &gt; 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]

    choose()函數(shù)

    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]

    select()函數(shù)

    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]

    NumPy統(tǒng)計(jì)運(yùn)算

    統(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è)百分比所處的位置

    求和(Sum)

    numbers = [1, 2, 3, 4, 5]
    total = sum(numbers)
    print(total)  # 輸出:15

    平均數(shù)(Mean)

    numbers = [1, 2, 3, 4, 5]
    average = sum(numbers) / len(numbers)
    print(average)  # 輸出:3.0

    中位數(shù)(Median)

    import statistics
    numbers = [1, 2, 3, 4, 5]
    median = statistics.median(numbers)
    print(median)  # 輸出:3

    眾數(shù)(Mode)

    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

    方差(Variance)

    import statistics
    numbers = [1, 2, 3, 4, 5]
    variance = statistics.variance(numbers)
    print(variance)  # 輸出:2.5

    標(biāo)準(zhǔn)差(Standard Deviation)

    import statistics
    numbers = [1, 2, 3, 4, 5]
    stdev = statistics.stdev(numbers)
    print(stdev)  # 輸出:1.5811388300841898

    百分位數(shù)(Percentile)

    import numpy as np
    numbers = [1, 2, 3, 4, 5]
    percentile = np.percentile(numbers, 50)
    print(percentile)  # 輸出:3.0

    NumPy算術(shù)函數(shù)

    函數(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ù)

    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ù)

    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ù)

    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è)資訊頻道。

    向AI問一下細(xì)節(jié)

    免責(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)容。

    AI