深入探索NumPy:科學(xué)計算利器的常用函數(shù)大全
在數(shù)據(jù)科學(xué)和機器學(xué)習(xí)領(lǐng)域,NumPy(Numerical Python)模塊是Python中最常用的科學(xué)計算庫之一。它提供了豐富的功能,包括數(shù)組操作、數(shù)學(xué)函數(shù)、統(tǒng)計方法等,為數(shù)據(jù)處理和分析提供了強大的工具。本文將重點介紹NumPy模塊中常用的函數(shù),涵蓋字符串處理、數(shù)學(xué)運算、算術(shù)操作、統(tǒng)計計算、排序以及搜索等多個方面。
1. 字符串處理函數(shù)
1.1 numpy.char.add()
該函數(shù)用于執(zhí)行逐元素的字符串連接操作。例如:
import numpy as np
arr1 = np.array(['Hello', 'World'])
arr2 = np.array([' ', 'NumPy'])
result = np.char.add(arr1, arr2)
print(result)
# 輸出:['Hello ' 'WorldNumPy']
1.2 numpy.char.upper()
和 numpy.char.lower()
分別用于將字符串數(shù)組轉(zhuǎn)換為大寫和小寫形式。
arr = np.array(['hello', 'world'])
upper_case = np.char.upper(arr)
lower_case = np.char.lower(arr)
print(upper_case)
# 輸出:['HELLO' 'WORLD']
print(lower_case)
# 輸出:['hello' 'world']
2. 數(shù)學(xué)運算函數(shù)
2.1 numpy.sin()
和 numpy.cos()
用于計算輸入數(shù)組中元素的正弦和余弦值。
arr = np.array([0, np.pi/2, np.pi])
sin_values = np.sin(arr)
cos_values = np.cos(arr)
print(sin_values)
# 輸出:[0. 1. 0.]
print(cos_values)
# 輸出:[1. 0. -1.]
2.2 numpy.exp()
和 numpy.log()
分別用于計算輸入數(shù)組中元素的指數(shù)和自然對數(shù)。
arr = np.array([1, 2, 3])
exp_values = np.exp(arr)
log_values = np.log(arr)
print(exp_values)
# 輸出:[2.71828183 7.3890561 20.08553692]
print(log_values)
# 輸出:[0. 0.69314718 1.09861229]
3. 算術(shù)操作函數(shù)
3.1 numpy.add()
和 numpy.subtract()
執(zhí)行逐元素的加法和減法操作。
arr1 = np.array([1, 2, 3])
arr2 = np.array([4, 5, 6])
add_result = np.add(arr1, arr2)
subtract_result = np.subtract(arr2, arr1)
print(add_result)
# 輸出:[5 7 9]
print(subtract_result)
# 輸出:[3 3 3]
3.2 numpy.multiply()
和 numpy.divide()
分別執(zhí)行逐元素的乘法和除法操作。
arr1 = np.array([1, 2, 3])
arr2 = np.array([4, 5, 6])
multiply_result = np.multiply(arr1, arr2)
divide_result = np.divide(arr2, arr1)
print(multiply_result)
# 輸出:[4 10 18]
print(divide_result)
# 輸出:[4. 2.5 2.]
4. 統(tǒng)計計算函數(shù)
4.1 numpy.mean()
和 numpy.median()
分別計算數(shù)組元素的平均值和中位數(shù)。
arr = np.array([1, 2, 3, 4, 5])
mean_value = np.mean(arr)
median_value = np.median(arr)
print(mean_value)
# 輸出:3.0
print(median_value)
# 輸出:3.0
4.2 numpy.std()
和 numpy.var()
分別計算數(shù)組元素的標準差和方差。
arr = np.array([1, 2, 3, 4, 5])
std_value = np.std(arr)
var_value = np.var(arr)
print(std_value)
# 輸出:1.4142135623730951
print(var_value)
# 輸出:2.0
5. 排序函數(shù)
5.1 numpy.sort()
用于對輸入數(shù)組進行排序。
arr = np.array([3, 1, 4, 1, 5, 9, 2, 6, 5, 3])
sorted_arr = np.sort(arr)
print(sorted_arr)
# 輸出:[1 1 2 3 3 4 5 5 6 9]
6. 搜索函數(shù)
6.1 numpy.where()
根據(jù)指定條件返回數(shù)組中滿足條件的元素的索引。
arr = np.array([1, 2, 3, 4, 5])
indices = np.where(arr > 3)
print(indices)
# 輸出:(array([3, 4]),)
以上只是NumPy模塊中常用函數(shù)的一小部分示例。NumPy提供了眾多功能強大的函數(shù),深入理解這些函數(shù)將幫助你更高效地進行科學(xué)計算和數(shù)據(jù)處理。通過不斷實踐和探索,你將更熟練地運用NumPy來處理各種數(shù)據(jù)分析和科學(xué)計算任務(wù)。
7. 多維數(shù)組操作函數(shù)
7.1 numpy.reshape()
用于改變數(shù)組的形狀,使其符合指定的維度。
arr = np.array([1, 2, 3, 4, 5, 6])
reshaped_arr = np.reshape(arr, (2, 3))
print(reshaped_arr)
# 輸出:
# [[1 2 3]
# [4 5 6]]
7.2 numpy.transpose()
用于交換數(shù)組的維度。
arr = np.array([[1, 2, 3], [4, 5, 6]])
transposed_arr = np.transpose(arr)
print(transposed_arr)
# 輸出:
# [[1 4]
# [2 5]
# [3 6]]
8. 隨機數(shù)生成函數(shù)
8.1 numpy.random.rand()
生成指定形狀的隨機數(shù)數(shù)組,取值范圍在 [0, 1)
。
random_arr = np.random.rand(2, 3)
print(random_arr)
# 輸出:
# [[0.12345678 0.45678901 0.78901234]
# [0.23456789 0.56789012 0.89012345]]
8.2 numpy.random.randint()
生成指定范圍內(nèi)的隨機整數(shù)數(shù)組。
random_int_arr = np.random.randint(1, 10, size=(3, 3))
print(random_int_arr)
# 輸出:
# [[8 5 1]
# [4 7 2]
# [9 3 6]]
9. 線性代數(shù)函數(shù)
9.1 numpy.dot()
計算兩個數(shù)組的點積。
arr1 = np.array([[1, 2], [3, 4]])
arr2 = np.array([[5, 6], [7, 8]])
dot_product = np.dot(arr1, arr2)
print(dot_product)
# 輸出:
# [[19 22]
# [43 50]]
9.2 numpy.linalg.inv()
計算矩陣的逆。
arr = np.array([[1, 2], [3, 4]])
inv_matrix = np.linalg.inv(arr)
print(inv_matrix)
# 輸出:
# [[-2. 1. ]
# [ 1.5 -0.5]]
通過深入了解和應(yīng)用NumPy模塊中的這些常用函數(shù),你將能夠更靈活、高效地處理各種科學(xué)計算和數(shù)據(jù)分析任務(wù)。這篇博客涵蓋了字符串處理、數(shù)學(xué)運算、算術(shù)操作、統(tǒng)計計算、排序、搜索、多維數(shù)組操作、隨機數(shù)生成和線性代數(shù)等多個方面的函數(shù),為你提供了全面的參考。在實踐中不斷使用這些函數(shù),并結(jié)合具體場景,將會更好地理解和掌握NumPy的強大功能。
10. 矩陣操作函數(shù)
10.1 numpy.matmul()
用于執(zhí)行矩陣乘法,與 numpy.dot()
類似。
matrix1 = np.array([[1, 2], [3, 4]])
matrix2 = np.array([[5, 6], [7, 8]])
matmul_result = np.matmul(matrix1, matrix2)
print(matmul_result)
# 輸出:
# [[19 22]
# [43 50]]
10.2 numpy.trace()
計算矩陣的跡,即主對角線上元素的和。
matrix = np.array([[1, 2, 3], [4, 5, 6], [7, 8, 9]])
trace_value = np.trace(matrix)
print(trace_value)
# 輸出:15
11. 拼接和分割函數(shù)
11.1 numpy.concatenate()
用于沿指定軸拼接數(shù)組。
arr1 = np.array([[1, 2], [3, 4]])
arr2 = np.array([[5, 6]])
concatenated_arr = np.concatenate((arr1, arr2), axis=0)
print(concatenated_arr)
# 輸出:
# [[1 2]
# [3 4]
# [5 6]]
11.2 numpy.split()
將數(shù)組沿指定軸分割成多個子數(shù)組。
arr = np.array([1, 2, 3, 4, 5, 6])
split_arr = np.split(arr, 3)
print(split_arr)
# 輸出:[array([1, 2]), array([3, 4]), array([5, 6])]
12. 數(shù)組元素的重復(fù)和堆疊函數(shù)
12.1 numpy.repeat()
用于沿指定軸重復(fù)數(shù)組中的元素。
arr = np.array([1, 2, 3])
repeated_arr = np.repeat(arr, 3)
print(repeated_arr)
# 輸出:[1 1 1 2 2 2 3 3 3]
12.2 numpy.tile()
用于沿指定軸堆疊數(shù)組的副本。
arr = np.array([1, 2, 3])
tiled_arr = np.tile(arr, 3)
print(tiled_arr)
# 輸出:[1 2 3 1 2 3 1 2 3]
這些矩陣操作、拼接、分割、重復(fù)和堆疊等函數(shù)為NumPy提供了更多處理多維數(shù)組的靈活性。在實際應(yīng)用中,這些函數(shù)能夠滿足各種數(shù)據(jù)處理的需求,特別是在深度學(xué)習(xí)和神經(jīng)網(wǎng)絡(luò)等領(lǐng)域。通過熟練掌握這些函數(shù),你將更好地處理和操作復(fù)雜的數(shù)據(jù)結(jié)構(gòu)。
13. 廣播(Broadcasting)
NumPy的廣播機制允許對形狀不同但滿足一定條件的數(shù)組進行操作,而無需顯式循環(huán)。這樣可以更方便地處理不同維度的數(shù)據(jù)。
arr1 = np.array([[1, 2, 3], [4, 5, 6]])
scalar = 10
result = arr1 * scalar
print(result)
# 輸出:
# [[10 20 30]
# [40 50 60]]
在這個例子中,標量 scalar
被廣播到了數(shù)組 arr1
的每個元素上,實現(xiàn)了逐元素的乘法運算。廣播機制使得處理不同維度的數(shù)據(jù)變得更加簡潔和高效。
14. 通用函數(shù)(ufunc)
NumPy提供了通用函數(shù),用于對數(shù)組進行逐元素的操作,這些函數(shù)支持廣播機制。
arr = np.array([1, 2, 3, 4, 5])
squared_arr = np.square(arr)
sqrt_arr = np.sqrt(arr)
print(squared_arr)
# 輸出:[ 1 4 9 16 25]
print(sqrt_arr)
# 輸出:[1. 1.41421356 1.73205081 2. 2.23606798]
通用函數(shù)可以直接應(yīng)用于整個數(shù)組,實現(xiàn)了對每個元素的相同操作,無需顯式循環(huán)。
15. 自定義函數(shù)
除了NumPy提供的眾多內(nèi)置函數(shù)外,你還可以自定義函數(shù)并應(yīng)用于數(shù)組。
def my_function(x):
return x ** 2 + 2 * x + 1
arr = np.array([1, 2, 3, 4, 5])
result = my_function(arr)
print(result)
# 輸出:[ 4 9 16 25 36]
通過自定義函數(shù),你可以根據(jù)具體需求實現(xiàn)各種復(fù)雜的操作,從而更靈活地處理數(shù)據(jù)。
16. 高級索引和切片
NumPy提供了靈活的高級索引和切片功能,使得對數(shù)組進行更復(fù)雜的操作成為可能。
16.1 花式索引
使用整數(shù)數(shù)組或布爾數(shù)組作為索引進行高級的元素選擇。
arr = np.array([1, 2, 3, 4, 5])
indices = np.array([0, 2, 4])
result = arr[indices]
print(result)
# 輸出:[1 3 5]
16.2 切片操作
對數(shù)組進行切片,可以截取數(shù)組的子集。
arr = np.array([1, 2, 3, 4, 5])
subset = arr[1:4]
print(subset)
# 輸出:[2 3 4]
16.3 布爾索引
使用布爾條件來選擇數(shù)組中的元素。
arr = np.array([1, 2, 3, 4, 5])
condition = arr > 2
result = arr[condition]
print(result)
# 輸出:[3 4 5]
17. 文件的輸入輸出
NumPy允許將數(shù)組保存到文件中,或從文件中加載數(shù)組。
17.1 保存數(shù)組到文件
arr = np.array([1, 2, 3, 4, 5])
np.save('saved_array.npy', arr)
17.2 從文件加載數(shù)組
loaded_arr = np.load('saved_array.npy')
print(loaded_arr)
# 輸出:[1 2 3 4 5]
18. NumPy與Pandas的結(jié)合
NumPy和Pandas是Python中數(shù)據(jù)科學(xué)領(lǐng)域中兩個最常用的庫,它們能夠很好地協(xié)同工作。
18.1 將NumPy數(shù)組轉(zhuǎn)換為Pandas DataFrame
import pandas as pd
arr = np.array([[1, 2, 3], [4, 5, 6]])
df = pd.DataFrame(arr, columns=['A', 'B', 'C'])
print(df)
# 輸出:
# A B C
# 0 1 2 3
# 1 4 5 6
18.2 從Pandas DataFrame獲取NumPy數(shù)組
arr_from_df = df.values
print(arr_from_df)
# 輸出:
# [[1 2 3]
# [4 5 6]]
總結(jié):
NumPy模塊是Python中最常用的科學(xué)計算庫之一,本文深入介紹了NumPy的眾多常用函數(shù),涵蓋了字符串處理、數(shù)學(xué)運算、算術(shù)操作、統(tǒng)計計算、排序、搜索、多維數(shù)組操作、隨機數(shù)生成、線性代數(shù)等多個領(lǐng)域。通過實例和代碼解析,讀者可以全面了解NumPy的功能,并在數(shù)據(jù)科學(xué)和機器學(xué)習(xí)項目中靈活運用。
文章中包含了以下關(guān)鍵點:文章來源:http://www.zghlxwxcb.cn/news/detail-828721.html
- 字符串處理函數(shù),如
numpy.char.add()
和numpy.char.upper()
- 數(shù)學(xué)運算函數(shù),如
numpy.sin()
和numpy.exp()
- 算術(shù)操作函數(shù),如
numpy.add()
和numpy.multiply()
- 統(tǒng)計計算函數(shù),如
numpy.mean()
和numpy.std()
- 排序函數(shù),如
numpy.sort()
- 搜索函數(shù),如
numpy.where()
- 多維數(shù)組操作函數(shù),如
numpy.reshape()
和numpy.transpose()
- 隨機數(shù)生成函數(shù),如
numpy.random.rand()
和numpy.random.randint()
- 線性代數(shù)函數(shù),如
numpy.dot()
和numpy.linalg.inv()
- 矩陣操作函數(shù),如
numpy.matmul()
和numpy.trace()
- 拼接和分割函數(shù),如
numpy.concatenate()
和numpy.split()
- 數(shù)組元素的重復(fù)和堆疊函數(shù),如
numpy.repeat()
和numpy.tile()
- 廣播機制,簡化不同維度數(shù)組的操作
- 通用函數(shù)(ufunc),支持廣播機制的逐元素操作
- 高級索引和切片,包括花式索引、切片操作和布爾索引
- 文件的輸入輸出,通過
np.save()
和np.load()
保存和加載數(shù)組 - NumPy與Pandas的結(jié)合,實現(xiàn)數(shù)組與數(shù)據(jù)框之間的轉(zhuǎn)換
通過深入學(xué)習(xí)這些功能,讀者將能夠更高效地處理各種科學(xué)計算和數(shù)據(jù)分析任務(wù)。NumPy為Python數(shù)據(jù)科學(xué)領(lǐng)域提供了強大的工具,同時與其他庫的結(jié)合也使得整個數(shù)據(jù)處理流程更加靈活和全面。希望本文能夠為讀者提供豐富的知識,并幫助他們在實踐中更好地利用NumPy的強大功能。文章來源地址http://www.zghlxwxcb.cn/news/detail-828721.html
到了這里,關(guān)于深入探索NumPy:科學(xué)計算利器的常用函數(shù)大全【第86篇—NumPy常用函數(shù)大全】的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!