(給機器學習算法與Python學習加星标,提升AI技能)

Numpy是一個Python庫/子產品,在Python程式設計中用于科學計算。在本教程中,你将學習如何在Numpy數組上執行一系列操作,例如以多種方式添加、删除、排序和操作元素。
Numpy提供一個多元數組對象和其他派生數組,如掩碼數組或掩碼多元數組。
為什麼使用Numpy?
Numpy子產品提供一個ndarray對象,我們可以用這個對象來對任意次元的數組執行操作。ndarray代表N維數組,其中N是任意數字。這意味着Numpy數組可以是任意次元的數組。
與Python清單相比,Numpy有很多優點。我們可以對Numpy數組執行高性能操作,例如:
1. 數組成員排序
2. 數學和邏輯運算
3. 輸入/輸出功能
4. 統計和線性代數運算
如何安裝Numpy?
想要安裝Numpy,需要在電腦系統上安裝Python和Pip。
在Windows作業系統上執行以下指令:
pip install numpy
現在可以像這樣在腳本中導入Numpy:
import numpy
添加數組元素
你可以使用NumPy子產品的append()方法添加一個NumPy數組元素。append的使用操作如下:
numpy.append(array, value, axis)
這些值将附加在數組的末尾,新的ndarray将與上面所示的新值和舊值一起傳回。
axis是一個可選的整數,用于定義數組的顯示方式。如果沒有指定axis,數組結構将被展平,如你稍後将看到的一樣。
請看下面的示例,首先建立一個數組,然後使用append方法向該數組添加更多值:
a = numpy.array([1, 2, 3])
newArray = numpy.append (a, [10, 11, 12])
添加列
使用Numpy的append()方法插入列。
請看下面的示例,建立了一個二維數組并插入了兩列:
a = numpy.array([[1, 2, 3], [4, 5, 6]])
b = numpy.array([[400], [800]])
newArray = numpy.append(a, b, axis = 1)
如果未使用axis屬性,則輸出如下:
這就是數組結構的扁平化過程。
在NumPy中,還可以使用insert()方法插入元素或列。insert()和append()兩種方法之間的差別在于我們在使用insert()方法時,可以指定要在哪個索引處添加元素,而append()方法則會在數組末尾添加一個值。
請看以下示例:
a = numpy.array([1, 2, 3])
newArray = numpy.insert(a, 1, 90)
這裡,insert()方法在索引1處添加元素。請記住數組索引從0開始。
添加行
在本節中,我們将使用append()方法向數組添加行。此方法就像在數組中添加元素一樣簡單。請看以下示例:
a = numpy.array([[1, 2, 3], [4, 5, 6]])
newArray = numpy.append(a, [[50, 60, 70]], axis = 0)
删除元素
可以使用NumPy子產品的delete()方法删除NumPy數組元素,以下示例對此進行了示範:
a = numpy.array([1, 2, 3])
newArray = numpy.delete(a, 1, axis = 0)
輸出如下:
在上面的例子中,可以看到一個單維數組。delete()方法從數組中删除索引1處的元素。
删除行
同樣,可以使用delete()方法删除行。
請看以下示例,從二維數組中删除了一行:
a = numpy.array([[1, 2, 3], [4, 5, 6], [10, 20, 30]])
newArray = numpy.delete(a, 1, axis = 0)
在delete()方法中,首先給出數組,然後給出要删除元素的索引。在上面的示例中,删除索引為1的第二個元素。
檢查 NumPy 數組是否為空值
使用size方法得出數組中元素的總數。
在下面的示例中,我們将會使用一個if語句,該語句通過ndarray.size去檢查數組中是否有元素,其中ndarray是任意給定的NumPy數組:
import numpy
a = numpy.array([1, 2, 3])
if(a.size == 0):
print("The given Array is empty")
其他:
print("The array = ", a)
輸出如下:
在上面的代碼中,有三個元素,是以這個數組不是空的,if條件将傳回false。
如果沒有元素,if條件将變為true,并将顯示空白數組。
如果我們的數組等于:
a = numpy.array([])
上述代碼的輸出如下:
查找值的索引
使用Numpy子產品的where()方法查找值的索引,如下例所示:
import numpy
a = numpy.array([1, 2, 3, 4, 5])
print("5 is found at index: ", numpy.where(a == 5))
Where()方法還将傳回資料類型。如果你隻想擷取索引,請使用以下代碼:
import numpy
a = numpy.array([1, 2, 3, 4, 5])
index = numpy.where(a == 5)
print("5 is found at index: ", index[0])
NumPy 數組切片
數組切片是從給定數組中提取子集的過程。可以使用冒号運算符對數組進行切片,并指定數組索引的起點和終點,例如:
array[from:to]
下面的示例突出了這點:
import numpy
a = numpy.array([1, 2, 3, 4, 5, 6, 7, 8])
print("A subset of array a = ", a[2:5])
這裡我們提取索引2到索引5中的元素。輸出将是:
如果想要提取最後三個元素,可以通過使用負片切片來完成此操作,如下所示:
import numpy
a = numpy.array([1, 2, 3, 4, 5, 6, 7, 8])
print("A subset of array a = ", a[-3:])
将函數應用于所有數組元素
在下面的示例中,我們将建立一個lambda函數,在該函數上傳遞數組以将其應用于所有元素:
import numpy
addition = lambda x: x + 2
a = numpy.array([1, 2, 3, 4, 5, 6])
print("Array after addition function: ", addition(a))
在此示例中,建立了一個lambda函數,它将每個元素遞增2個值。
NumPy 數組長度
你可以通過使用NumPy子產品的size屬性來擷取NumPy數組的長度,如下例所示:
import numpy
a = numpy.array([1, 2, 3, 4, 5, 6])
print("The size of array = ", a.size)
從清單中建立numpy數組
Python中的清單是方括号之間的多個元素。
假設有一個清單:
l = [1, 2, 3, 4, 5]
現在要根據這個清單建立一個數組,我們将使用NumPy子產品的array()方法:
import numpy
l = [1, 2, 3, 4, 5]
a = numpy.array(l)
print("The NumPy array from Python list = ", a)
同樣地,通過使用array()方法,我們可以根據元組建立一個NumPy數組。一個元組包含多個用圓括号括起來的元素,如下所示:
import numpy
t = (1, 2, 3, 4, 5)
a = numpy.array(t)
print("The NumPy array from Python Tuple = ", a)
将NumPy數組轉換為清單
想要将數組轉換為清單,我們可以使用NumPy子產品的tolist()方法。
請看以下代碼:
import numpy
a = numpy.array([1, 2, 3, 4, 5])
print("Array to list = ", a.tolist())
在這段代碼中,我們簡單地運用了能将數組轉換為清單的tolist()方法。然後将新建立的清單列印到輸出螢幕。
從NumPy 到CSV
使用NumPy子產品的savetxt()方法将數組導出為CSV檔案,如下例所示:
import numpy
a = numpy.array([1, 2, 3, 4, 5])
numpy.savetxt("myArray.csv", a)
代碼将在Python代碼檔案存儲位置生成一個CSV檔案。你還可以指定其路徑。運作腳本時,檔案将生成如下代碼:
該檔案的内容如下:
你可以删除額外的零填充,如下所示:
numpy.savetxt("myArray.csv", a,fmt= %.2f )
将 NumPy 數組排序
可以使用Numpy子產品的sort()方法對numpy數組進行排序:
Sort()函數采用一個可選的axis(整數),預設值為-1。此axis指定要對數組進行排序的axis。-1表示數組将根據最後一個axis進行排序。
請看以下示例:
import numpy
a = numpy.array([16, 3, 2, 6, 8, 10, 1])
print("Sorted array = ", numpy.sort(a))
在本例中,我們在print語句中運用了sort()方法。數組“a”被傳遞給排序函數。其輸出如下:
規範化數組
規範化數組是将數組值設定為某個定義範圍内的過程。例如,我們可以說我們想要規範化一個介于-1和1之間的數組,依此類推。
規範化公式如下:
x = (x – xmin) / (xmax – xmin)
現在将這個公式應用于數組,對它進行規範化操作。要查找數組中的最大和最小項,分别使用NumPy的max()和min()方法。
import numpy
x= numpy.array([400, 800, 200, 700, 1000, 2000, 300])
xmax = x.max()
xmin = x.min()
x = (x - xmin)/(xmax - xmin)
print("After normalization array x = ", x)
數組索引
索引指的是數組的一個元素。在以下示例中,我們在單維和二維數組中都使用了索引:
import numpy
a = numpy.array([20, 13, 42, 86, 81, 9, 11])
print("Element at index 3 = ", a[3])
現在使用二維數組進行索引:
import numpy
a = numpy.array([[20, 13, 42], [86, 81, 9]])
print("Element at index a[1][2] = ", a[1][2])
索引[1] [2]表示第二行和第三列(索引從0開始)。是以,我們在輸出螢幕上能看到9個索引。
将numpy數組附加到另一個數組上
你可以使用append()方法将一個NumPy數組附加到另一個NumPy數組上。請看以下示例:
import numpy
a = numpy.array([1, 2, 3, 4, 5])
b = numpy.array([10, 20, 30, 40, 50])
newArray = numpy.append(a, b)
print("The new array = ", newArray)
在本例中,我們建立一個numpy數組“a”,然後建立另一個名為“b”的數組。然後我們使用append()方法傳遞兩個數組。當數組“b”作為第二個參數傳遞時,将被添加到數組“a”的末尾。
正如我們所見,使用Numpy數組非常簡單。在使用大多數機器學習庫時,Numpy數組非常重要。是以,我們可以說Numpy是通往人工智能的大門。
相關連結:
https://www.codementor.io/likegeeks/python-numpy-array-tutorial-rw4gnhfg0
推薦閱讀
GitHub超 7.9 萬星,最全Python入門算法!
【原來如此】圖文并茂,一文讀懂"自注意力"背後的技術!
論文繪圖神器來了:一行代碼繪制不同期刊格式圖表,哈佛博士後開源
這 68 個 Python 内置函數請收好!
長文 | 盤點 YOLOv4 這些鮮為人知的特性!
numpy 是否為零_【精讀】Numpy詳解
numpy 是否為零_【精讀】Numpy詳解