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))
以上就是本文總結的Numpy常用函數,這些函數可以幫助我們實現資料分析和建模。希望這些範例程式碼可以幫助讀者更好地理解。
以上是Numpy函式庫常用函數彙總:實作資料分析與建模的利器的詳細內容。更多資訊請關注PHP中文網其他相關文章!