Numpy是Python中最常用的數學庫之一,它集成了許多最佳的數學函數和操作。Numpy的使用非常廣泛,包括統計、線性代數、圖像處理、機器學習、神經網絡等領域。在數據分析和建模方面,Numpy更是必不可少的工具之一。本文將分享Numpy常用的數學函數,以及使用這些函數實現數據分析和建模的示例代碼。
一、創建數組
使用Numpy中array()
函數可以創建一個數組,代碼示例:
import numpy as np arr = np.array([1, 2, 3, 4, 5]) print(arr)
登錄后復制
這會輸出 [1 2 3 4 5],表示創建了一個一維數組。
我們還可以創建一個二維數組,代碼示例:
import numpy as np arr = np.array([[1, 2, 3], [4, 5, 6]]) print(arr)
登錄后復制
這會輸出:
[[1 2 3] [4 5 6]]
登錄后復制
表示創建了一個二維數組。
二、數組屬性
使用Numpy中的ndim
、shape
和size
屬性可以獲取數組的維度、形狀和元素個數,代碼示例:
import numpy as np arr = np.array([[1, 2, 3], [4, 5, 6]]) print(arr.ndim) # 輸出 2,表示數組是二維的 print(arr.shape) # 輸出 (2, 3),表示數組有2行3列 print(arr.size) # 輸出 6,表示數組有6個元素
登錄后復制
三、數組的運算
Numpy數組可以進行加、減、乘、除等運算。首先看一下給數組加一個標量的運算,代碼示例:
import numpy as np arr = np.array([1, 2, 3, 4, 5]) print(arr + 2) # 輸出 [3 4 5 6 7]
登錄后復制
表示數組中的每個元素都加上了2。
接下來是兩個數組相加的運算,代碼示例:
import numpy as np arr1 = np.array([1, 2, 3]) arr2 = np.array([4, 5, 6]) print(arr1 + arr2) # 輸出 [5 7 9]
登錄后復制
表示兩個數組中對應的元素相加。
Numpy還提供了一些特定的運算,例如:
平方運算:使用power()
函數,代碼示例:
import numpy as np arr = np.array([1, 2, 3, 4, 5]) print(np.power(arr, 2)) # 輸出 [ 1 4 9 16 25]
登錄后復制
這表示數組中的每個元素都平方了。
開方運算:使用sqrt()
函數,代碼示例:
import numpy as np arr = np.array([1, 4, 9, 16, 25]) print(np.sqrt(arr)) # 輸出 [1. 2. 3. 4. 5.]
登錄后復制
這表示數組中的每個元素都開方了。
求和:使用sum()
函數,代碼示例:
import numpy as np arr = np.array([1, 2, 3, 4, 5]) print(np.sum(arr)) # 輸出 15
登錄后復制
這表示數組中的所有元素求和。
求最大值和最小值:使用max()
和min()
函數,代碼示例:
import numpy as np arr = np.array([1, 2, 3, 4, 5]) print(np.max(arr)) # 輸出 5,表示數組中的最大值 print(np.min(arr)) # 輸出 1,表示數組中的最小值
登錄后復制
四、數組的索引和切片
我們可以使用下標來訪問數組中的元素,代碼示例:
import numpy as np arr = np.array([1, 2, 3, 4, 5]) print(arr[0]) # 輸出 1,表示數組中的第一個元素
登錄后復制
我們還可以對數組進行切片操作,代碼示例:
import numpy as np arr = np.array([1, 2, 3, 4, 5]) print(arr[1:4]) # 輸出 [2 3 4],表示從數組中取出第2個到第4個元素
登錄后復制
五、數組形狀的變換
Numpy中提供了一些函數用于改變數組的形狀,其中之一是reshape()
函數。我們可以使用reshape()
函數重塑數組的形狀,代碼示例:
import numpy as np arr = np.array([1, 2, 3, 4, 5]) print(arr.reshape(5, 1))
登錄后復制
這會返回一個形狀為(5, 1)的二維數組:
[[1] [2] [3] [4] [5]]
登錄后復制
六、數組的合并與拆分
Numpy中提供了一些函數用于合并和拆分數組。
我們可以使用concatenate()
函數將兩個數組沿著某個維度合并,代碼示例:
import numpy as np arr1 = np.array([1, 2, 3]) arr2 = np.array([4, 5, 6]) print(np.concatenate((arr1, arr2))) # 輸出 [1 2 3 4 5 6]
登錄后復制
我們還可以使用vstack()
和hstack()
函數將兩個數組水平或垂直堆疊在一起,代碼示例:
import numpy as np arr1 = np.array([1, 2, 3]) arr2 = np.array([4, 5, 6]) # 垂直堆疊 print(np.vstack((arr1, arr2))) # 輸出 [[1 2 3] [4 5 6]] # 水平堆疊 print(np.hstack((arr1, arr2))) # 輸出 [1 2 3 4 5 6]
登錄后復制
我們還可以使用split()
函數將一個數組拆分成多個數組,代碼示例:
import numpy as np arr = np.array([1, 2, 3, 4, 5]) print(np.split(arr, 5)) # 輸出 [array([1]), array([2]), array([3]), array([4]), array([5])]
登錄后復制
這會將數組拆分成5個一維數組,每個數組中只包含一個元素。
七、綜合示例
現在,我們將使用Numpy中的函數實現一個簡單的數據分析和建模的例子。
示例:假設你有100個學生的成績,你想計算他們的平均成績、最高成績和最低成績。
首先,我們用random()
函數生成100個隨機數,并使用mean()
、max()
和min()
函數計算它們的平均值、最高值和最低值,代碼示例:
import numpy as np grades = np.random.randint(50, 100, 100) # 生成50到100之間的100個隨機數 print("平均成績:", np.mean(grades)) print("最高成績:", np.max(grades)) print("最低成績:", np.min(grades))
登錄后復制
接下來,我們將使用histogram()
函數生成一個成績的直方圖,代碼示例:
import matplotlib.pyplot as plt import numpy as np grades = np.random.randint(50, 100, 100) # 生成50到100之間的100個隨機數 hist, bins = np.histogram(grades, bins=10, range=(50, 100)) plt.hist(grades, bins=10, range=(50, 100)) plt.show()
登錄后復制
最后,我們將使用percentile()
函數計算成績的百分位數,代碼示例:
import numpy as np grades = np.random.randint(50, 100, 100) # 生成50到100之間的100個隨機數 print("90%的成績高于:", np.percentile(grades, 90))
登錄后復制