NumPy 舍入小數、對數、求和和乘積運算詳解

小万哥丶發表於2024-06-12

舍入小數

在 NumPy 中,主要有五種方法來舍入小數:

截斷

去除小數部分,並返回最接近零的浮點數。使用 trunc()fix() 函式。

示例:

import numpy as np

arr = np.trunc([-3.1666, 3.6667])

print(arr)

相同的示例,使用 fix()

import numpy as np

arr = np.fix([-3.1666, 3.6667])

print(arr)

四捨五入

around() 函式在數字大於或等於 5 時將前面的數字或小數部分加 1。

例如:將數字四捨五入到 1 個小數位,3.16666 是 3.2。

示例:

import numpy as np

arr = np.around(3.1666, 2)

print(arr)

向下取整

floor() 函式將小數舍入到最接近的較低整數。

例如:3.166 的 floor 是 3。

示例:

import numpy as np

arr = np.floor([-3.1666, 3.6667])

print(arr)

向上取整

ceil() 函式將小數舍入到最接近的較高整數。

例如:3.166 的 ceil 是 4。

示例:

import numpy as np

arr = np.ceil([-3.1666, 3.6667])

print(arr)

NumPy 對數

NumPy 提供了在底數為 2、e 和 10 的情況下執行對數運算的函式。

我們還將探討如何透過建立自定義的 ufunc 來以任意底數取對數。

如果無法計算對數,所有的對數函式都會在元素中放置 -infinf

底數為 2 的對數

使用 log2() 函式執行底數為 2 的對數運算。

示例:

import numpy as np

arr = np.arange(1, 10)

print(np.log2(arr))

注意:arange(1, 10) 函式返回一個從 1(包括)到 10(不包括)的整數陣列。

底數為 10 的對數

使用 log10() 函式執行底數為 10 的對數運算。

示例:

import numpy as np

arr = np.arange(1, 10)

print(np.log10(arr))

自然對數,即底數為 e 的對數

使用 log() 函式執行底數為 e 的對數運算。

示例:

import numpy as np

arr = np.arange(1, 10)

print(np.log(arr))

任意底數的對數

NumPy 不提供任意底數的對數函式,所以我們可以使用 frompyfunc() 函式結合內建函式 math.log(),它有兩個輸入引數和一個輸出引數:

示例:

from math import log
import numpy as np

nplog = np.frompyfunc(log, 2, 1)

print(nplog(100, 15))

NumPy 求和

求和和加法有什麼區別?

加法是在兩個引數之間進行操作,而求和是在 n 個元素上進行操作。

示例:

import numpy as np

arr1 = np.array([1, 2, 3])
arr2 = np.array([1, 2, 3])

newarr = np.add(arr1, arr2)

print(newarr)

返回:[2 4 6]

示例

arr1arr2 中的值進行求和:

import numpy as np

arr1 = np.array([1, 2, 3])
arr2 = np.array([1, 2, 3])

newarr = np.sum([arr1, arr2])

print(newarr)

返回:12

沿軸求和

如果指定 axis=1,則 NumPy 將對每個陣列中的數字進行求和。

示例

在以下陣列上沿第一個軸執行求和:

import numpy as np

arr1 = np.array([1, 2, 3])
arr2 = np.array([1, 2, 3])

newarr = np.sum([arr1, arr2], axis=1)

print(newarr)

返回:[6 6]

累積求和

累積求和意味著部分地對陣列中的元素進行相加。

例如:[1, 2, 3, 4] 的部分和將是 [1, 1+2, 1+2+3, 1+2+3+4] = [1, 3, 6, 10]

使用 cumsum() 函式執行部分求和。

示例

在以下陣列中執行累積求和:

import numpy as np

arr = np.array([1, 2, 3])

newarr = np.cumsum(arr)

print(newarr)

返回:[1 3 6]

NumPy 乘積

要找到陣列中元素的乘積,使用 prod() 函式。

示例:

import numpy as np

arr = np.array([1, 2, 3, 4])

x = np.prod(arr)

print(x)

返回:24,因為 1*2*3*4 = 24

示例

找到兩個陣列中元素的乘積:

import numpy as np

arr1 = np.array([1, 2, 3, 4])
arr2 = np.array([5, 6, 7, 8])

x = np.prod([arr1, arr2])

print(x)

返回:40320,因為 1*2*3*4*5*6*7*8 = 40320

沿軸的乘積

如果指定 axis=1,則 NumPy 將返回每個陣列的乘積。

示例

在以下陣列上沿第一個軸執行乘積:

import numpy as np

arr1 = np.array([1, 2, 3, 4])
arr2 = np.array([5, 6, 7, 8])

newarr = np.prod([arr1, arr2], axis=1)

print(newarr)

返回:[24 1680]

累積乘積

累積乘積意味著部分地進行乘法。

例如:[1, 2, 3, 4] 的部分乘積是 [1, 1*2, 1*2*3, 1*2*3*4] = [1, 2, 6, 24]`

使用 cumprod() 函式執行部分乘積。

示例

對以下陣列中所有元素進行累積乘積:

import numpy as np

arr = np.array([5, 6, 7, 8])

newarr = np.cumprod(arr)

print(newarr)

返回:[5 30 210 1680]

最後

為了方便其他裝置和平臺的小夥伴觀看往期文章:

微信公眾號搜尋:Let us Coding,關注後即可獲取最新文章推送

看完如果覺得有幫助,歡迎點贊、收藏、關注

相關文章