Numpy 備忘單:Python 中的基本數據分析

Numpy 備忘單:Python 中的基本數據分析

Numpy 備忘單:Python 中的基本數據分析

作為使用 Python 的數據科學家,您很可能遇到過NumPy 庫它是Python中科學計算的基礎包之一。

憑藉對多維數組執行高性能操作的能力,NumPy 是任何深入研究數據科學或 Python 數值計算的人的必備工具。

NumPy 備忘單是一個極好的資源,可以幫助指導您進入這個 Python 庫。全面的備忘單將幫助您瀏覽 NumPy 的功能并快速熟練地使用它完成各種任務!

另外,請記住 NumPy 位於重要庫的核心,例如 Pandas、SciPy、sci-kit-learn 和其他 Python 包。

通過借助 Python NumPy備忘單掌握其基礎知識,您將能夠更好地使用這些庫。您還將提高處理複雜數據結構和計算的技能。

您是老派(像我們一樣)並想下載並可能打印出您的備忘單嗎?

向下滾動以執行此操作。

目錄

NumPy 基礎知識

在本節中,我們將介紹 NumPy 的基礎知識,重點介紹安裝 NumPy、數組創建、數組屬性和數據類型。這些概念將為在 Python 數據科學項目中理解和有效利用 NumPy 打下堅實的基礎。

1. 安裝和導入 NumPy

您可以使用以下命令從命令行安裝 NumPy:

pip install numpy

安裝後,將其導入您的代碼中。

import numpy as np

請記住,您可以使用除np之外的任何其他名稱。但是,np是大多數開發人員和數據科學家使用的標準 NumPy 導入約定。

2.數組創建

在 NumPy 中創建數組簡單明了。您可以使用numpy.array()函數從列表或元組創建數組:

import numpy as np

a = np.array([1, 2, 3])  # Creates a 1D array
b = np.array([(1, 2, 3), (4, 5, 6)])  # Creates a 2D array

您還可以使用各種函數生成特定形狀和值的數組:

  • np.zeros():創建一個用零填充的數組

  • np.ones():創建一個由 1 填充的數組

  • np.identity():創建單位矩陣數組。

  • np.empty():創建一個數組而不將其元素初始化為任何特定值

  • np.arange():創建一個數組,在起始值和結束值之間具有規則間隔的值

  • np.linspace():創建一個數組,在起始值和結束值之間具有指定數量的均勻間隔值

Numpy 備忘單:Python 中的基本數據分析

注意:您不能在 NumPy 中生成空數組。每個 NumPy 數組都有一個固定的、不可變的大小,並且在創建數組時必須填充數組中的每個元素。

np.empty ()函數創建所需的數組形狀並用隨機值填充它。默認方法創建一個隨機浮點數組。

您可以使用dtype參數創建不同的數組數據類型。

3.數組屬性

NumPy 數組有幾個屬性可以提供有關數組的有用信息。讓我們看看其中的一些:

  • ndarray.shape:返回數組的維度作為元組(行,列)

  • ndarray.ndim:返回數組的維數

  • ndarray.size:返回數組中元素的總數

  • ndarray.dtype:返回數組元素的數據類型

要訪問這些屬性,請使用點符號,如下所示:

a = np.array([(1, 2, 3), (4, 5, 6)])

#Print out the array shape
print(a.shape)  # Output: (2, 3)

Numpy 備忘單:Python 中的基本數據分析

4.數據類型

NumPy 提供了多種數據類型來將數據存儲在數組中,例如整數、字符串、浮點數、布爾值和復數。默認情況下,NumPy 會嘗試根據輸入元素推斷數據類型。

但是,您也可以使用dtype關鍵字顯式指定數據類型。例如:

import numpy as np
a = np.array([1, 2, 3], dtype=float)  # Creates an array of floats

常見的 NumPy 數據類型包括:

  • np.int32 : 32位整數

  • np.int64: 64 位整數

  • np.float32: 32位浮點數

  • np.float64: 64位浮點數

  • np.complex:複數,由兩個64位浮點數表示

您還可以將數組從一種數據類型轉換為另一種數據類型。在此示例中,我們將使用np.array()方法將整數數組a轉換為布爾數組arr

Numpy 備忘單:Python 中的基本數據分析

從示例中,我們可以看到 array() 方法將數組元素轉換為布爾值。然後這些布爾值形成新的 NumPy 數組 arr。

了解 NumPy 的這些基本概念將使您能夠有效地使用數組並執行各種數學 NumPy 運算。例如,您可以觀看我們關於如何在 Python 中轉換和編碼地址的視頻。

在其中,我們使用 Python Pandas 和 NumPy 數據類型對家庭地址進行地理編碼。

數組操作

在本節中,您將了解 NumPy 中的各種數組形狀操作技術。我們將討論重塑、串聯、複製、拆分、添加/刪除元素、索引和切片。

這些技術對於在數據科學項目中有效處理數組數據至關重要。

讓我們深入了解每個子部分。

1.重塑

在 NumPy 中重塑數組是您將要執行的一項常見任務。您可能需要更改數組的形狀以符合函數或算法的要求。

要重塑數組,請使用reshape()函數:

arr = np.array([1, 2, 3, 4, 5, 6])
new_arr = arr.reshape(2, 3)

這會將您的一維數組轉換為具有 2 行和 3 列的二維數組。

Numpy 備忘單:Python 中的基本數據分析

注意:確保您提供的新形狀與原始數組具有相同的大小(數組元素的數量)。

2.複製

您可以使用copy()方法將一個 NumPy 數組中的元素複製到另一個數組中。您應該注意,使用賦值運算符“=”會創建一個淺表副本。

#Creating a shallow copy of a NumPy array
a = np.array([9, 6, 12, 16, 20])
b = a
b[0] = 19

print(a) #Output:[19, 6, 12, 16, 20]
print(b) #Output:[19, 6, 12, 16, 20]

新數組僅引用系統內存中的舊數組。它們包含相同的元素,並且彼此不獨立。

通過使用深拷貝,您可以創建一個新的 NumPy 數組,其中包含與舊數組相同的數據,同時又獨立於舊數組。

#Creating a deep copy of a NumPy array
a = np.array([9, 6, 12, 16, 20])
b = np.copy(a)
b[0] = 19

print(a) #Output:[9, 6, 12, 16, 20]
print(b) #Output:[19, 6, 12, 16, 20]

3.串聯

有時,您可能需要將兩個數組合併為一個數組。在 NumPy 中,您可以使用concatenate()函數沿現有軸連接數組:

import numpy as np

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

這將arr1arr2組合成一個數組。請記住,被連接的數組應該具有相同的形狀,除了沿著指定的軸。

4.分裂

拆分與連接相反。您可以使用 split() 函數將一個數組分成更小的子數組:

arr = np.array([1, 2, 3, 4, 5, 6])
result = np.split(arr, 3)

這會將數組拆分為 3 個大小相等的子數組。確保您指定的拆分數可以沿給定軸平均劃分數組的大小。

Numpy 備忘單:Python 中的基本數據分析

5. 添加/刪除元素

可以使用append()delete()函數在 NumPy 數組中添加或刪除元素。您可以使用前者將值附加到數組的末尾,而後者刪除指定索引處的元素。

這是一個例子:

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

arr = np.append(arr, [4, 5, 6]) # Appends values to the end of the array
arr = np.delete(arr, 0) # Removes the array element on index 0

請記住,NumPy 數組具有固定大小。使用 append() 或 delete() 時,會創建一個新數組,而不會修改原來的數組。

6.索引

您可以像對 Python 列表或元組一樣對 NumPy 數組執行索引操作。讓我們看看如何訪問或更改給定數組中的數組元素。

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

#Returns the array element on index 1
element_2 = b[1]

#Change the array element on index 0
arr[0]= 89

7.切片

您還可以對 NumPy 數組進行切片以提取或查看數據的一部分,就像您執行 Python列表或集合一樣。讓我們看下面的例子:

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

# To return the first 3 elements of arr1
print(arr1[0:3]) #Output: [1, 2, 3]

# To return the second row in arr2
b = arr2[1, : ].copy() #Output: [4, 5, 6, 11, 13]

注意:切片會創建一個仍然引用主數組的淺表副本。因此,您對切片數據所做的任何更改都將應用於主數組,反之亦然。

為避免這種情況,您可以使用 copy() 方法創建一個深度的、獨立的副本。

初等函數

在本節中,您將了解 NumPy 中的不同基本函數,這將簡化您的數據分析任務。我們將介紹算術運算、三角函數、指數和對數。

1.算術運算

NumPy 提供對數組的各種數學運算,使它們的使用變得簡單高效。數組數學矢量數學

一些操作是:

  • 添加: numpy.add(x1, x2)

  • 減法: numpy.subtract(x1, x2)

  • 乘法: numpy.multiply(x1, x2)

  • 除法: numpy.divide(x1, x2)

  • 模數: numpy.mod(x1, x2)

  • 功率: numpy.power(x1, x2)

  • 平方根: numpy.sqrt(x)

Numpy 備忘單:Python 中的基本數據分析

注意:使用這些操作時,兩個數組的形狀必須相同。如果沒有,您將遇到錯誤。

由於稱為廣播的 NumPy 功能,某些數組存在異常。我們將在後面的部分中介紹。

您可以對數組按元素執行這些操作,這使得它們對於大規模數據操作非常高效。

2.三角學

三角函數在各種數學和科學計算中起著重要作用。NumPy 提供了廣泛的三角函數。

一些基本功能是:

  • 正弦:numpy.sin(x)

  • 餘弦: numpy.cos(x)

  • 切線: numpy.tan(x)

  • 反正弦: numpy.arcsin(x)

  • 反餘弦: numpy.arccos(x)

  • 反正切:numpy.arctan(x)

這些函數與數組無縫協作,使您可以更輕鬆地對大型數據集執行矢量化計算。

3.指數和對數

指數和對數對於各種數值運算至關重要。NumPy 提供了大量函數來處理指數和對數。

一些主要功能是:

  • 指數:numpy.exp(x)

  • 對數(以 e 為底): numpy.log(x)

  • 對數(以 10 為底): numpy.log10(x)

  • 對數(以 2 為底): numpy.log2(x)

利用這些函數,您可以快速對數組中的每個元素執行複雜的數學運算。這使您的數據分析任務更易於訪問且更高效。

陣列分析

在本節中,我們將討論在 NumPy 中分析數組和數組元素的各種技術。我們將介紹的一些關鍵特性包括聚合函數、統計函數、搜索和排序。

1.聚合函數

NumPy 提供了幾個聚合函數,允許您對數組執行操作,例如對所有元素求和、查找最小值或最大值等:

  • sum: np.sum(your_array) – 計算數組中所有元素的總和。

  • min: np.min(your_array) – 找到最小的數組元素。

  • max: np.max(your_array) – 找到最大的數組元素。

  • mean : np.mean(your_array) – 計算數組中值的平均值。

  • median : np.median(your_array) – 查找數組中值的中位數。

Numpy 備忘單:Python 中的基本數據分析

2.統計功能

NumPy 還有多種統計函數可以幫助你分析數據:

  • std: np.std(your_array) – 計算數組中值的標準差。

  • var: np.var(your_array) – 計算數組中值的方差。

  • corrcoef : np.corrcoef(your_array) – 計算數組的相關係數。

3.搜索

可以使用多種方法在 NumPy 數組中進行搜索:

  • argmin: np.argmin(your_array) – 找到最小數組元素的索引。

  • argmax: np.argmax(your_array) – 找到最大數組元素的索引。

  • 其中: np.where(condition) – 返回數組中滿足給定條件的元素的索引。

4.分揀

您可以使用以下函數對數組中的元素進行排序:

  • sort : np.sort(your_array) – 按升序對數組中的元素進行排序。

  • argsort: np.argsort(your_array) – 返回對數組進行排序的索引。

借助這些功能和技術,您可以方便地分析和操作 NumPy 數組,以發現有價值的見解並支持您的數據分析工作。

進階功能

在本節中,我們將探討 NumPy 中的一些高級函數,以幫助您更高效地處理數據。我們將介紹廣播和線性代數函數。

1.廣播

廣播是一個強大的 NumPy 功能,它允許您對具有不同形狀和大小的數組執行操作。它的工作原理是自動擴展較小數組的維度以匹配較大數組,從而更容易執行逐元素操作。

這是一個例子:

import numpy as np
A = np.array([1, 2, 3])
B = np.array([[1, 2, 3], [4, 5, 6], [7, 8, 9]])

C = A + B

在此示例中,一維數組 A 被廣播以匹配二維數組 B 的形狀,從而允許按元素添加。

Numpy 備忘單:Python 中的基本數據分析

使用廣播時請牢記以下規則:

  • 數組的維度必須兼容(大小相同或其中之一為 1)。

  • 廣播是從尾隨維度應用的,並向領先維度起作用。

2. 線性代數

NumPy 提供了幾個線性代數函數,在處理多維數組時很有用。其中一些功能包括:

  • np.dot(A, B):計算兩個數組的點積。

  • np.linalg.inv(A):計算方陣的逆。

  • np.linalg.eig(A):計算方陣的特徵值和特徵向量。

  • np.linalg.solve(A, B):求解線性方程組,其中A是係數矩陣,B是常數矩陣。

請記住在執行這些操作之前始終檢查您的矩陣是否兼容

輸入輸出

在本節中,我們將探討如何保存和加載數組,以及如何使用 NumPy 讀取和寫入文件。

1.保存和加載數組

要保存數組,您可以使用 NumPy 的np.save()函數。此函數將文件名和數組作為其兩個主要參數。

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

np.save('my_array.npy', arr)

要加載保存的數組,請使用np.load()函數,提供文件名作為參數。

loaded_array = np.load('my_array.npy')

print(loaded_array)  
# Output: array([1, 2, 3])

您還可以使用np.save()np.load()函數保存和加載多個數組。

2. 讀寫文本文件

NumPy 提供了用數組讀寫文本文件的函數,例如np.loadtxt()np.savetxt()。您可以使用這些函數從文件格式(如 txt 或 CSV 文件)保存和加載數據。

要將文本文件讀入數組,請使用np.loadtxt()函數。它以文件名作為主要參數,還支持用於指定分隔符、dtype 等的可選參數。

arr_from_txt = np.loadtxt('data.txt', delimiter=',')
print(arr_from_txt)

要從 CSV 文件中讀取數據,您還可以使用np.loadtxt()函數。但是,請確保分隔符始終設置為逗號“ , ”。

要將數組寫入文本文件,請使用np.savetxt()函數。此函數將文件名和數組作為其兩個主要參數,後跟可選參數,例如分隔符和標題。

arr_to_txt = np.array([[1, 2, 3], [4, 5, 6]])
np.savetxt('output_data.txt', arr_to_txt, delimiter=',')

這些輸入和輸出函數允許您使用 NumPy 在數據處理和操作任務中高效地處理數組和文本文件。

在下面下載您的備忘單

Numpy 備忘單下載

最後的想法

好了,這就是開始使用 Numpy Python 庫所需了解的全部內容!在使用該庫時,您還可以使用 Python Numpy 備忘單作為方便的參考。

如需更多高級功能,您可以查看NumPy 文檔。您還可以查看我們為新手和有經驗的開發人員整理的這份有趣的Python 備忘單。

祝你好運!


什麼是 Python 中的自我:真實世界的例子

什麼是 Python 中的自我:真實世界的例子

什麼是 Python 中的自我:真實世界的例子

如何在 R 中保存和加載 RDS 文件

如何在 R 中保存和加載 RDS 文件

您將學習如何在 R 中保存和加載 .rds 文件中的對象。本博客還將介紹如何將對像從 R 導入 LuckyTemplates。

回顧前 N 個工作日——DAX 編碼語言解決方案

回顧前 N 個工作日——DAX 編碼語言解決方案

在此 DAX 編碼語言教程中,了解如何使用 GENERATE 函數以及如何動態更改度量標題。

在 LuckyTemplates 中使用多線程動態視覺技術展示見解

在 LuckyTemplates 中使用多線程動態視覺技術展示見解

本教程將介紹如何使用多線程動態可視化技術從報告中的動態數據可視化中創建見解。

LuckyTemplates 篩選上下文簡介

LuckyTemplates 篩選上下文簡介

在本文中,我將貫穿過濾器上下文。篩選上下文是任何 LuckyTemplates 用戶最初應該了解的主要主題之一。

使用 LuckyTemplates 在線服務中的應用程序的最佳技巧

使用 LuckyTemplates 在線服務中的應用程序的最佳技巧

我想展示 LuckyTemplates Apps 在線服務如何幫助管理從各種來源生成的不同報告和見解。

隨著時間的推移分析利潤率變化——使用 LuckyTemplates 和 DAX 進行分析

隨著時間的推移分析利潤率變化——使用 LuckyTemplates 和 DAX 進行分析

了解如何在 LuckyTemplates 中使用度量分支和組合 DAX 公式等技術計算利潤率變化。

DAX Studio 中數據緩存的物化想法

DAX Studio 中數據緩存的物化想法

本教程將討論數據緩存物化的想法,以及它們如何影響 DAX 在提供結果時的性能。

使用 LuckyTemplates 進行業務報告

使用 LuckyTemplates 進行業務報告

如果直到現在你還在使用 Excel,那麼現在是開始使用 LuckyTemplates 來滿足你的業務報告需求的最佳時機。

什麼是 LuckyTemplates 網關?所有你必須知道的

什麼是 LuckyTemplates 網關?所有你必須知道的

什麼是 LuckyTemplates 網關?所有你必須知道的