03.21 代碼詳解:Numpy——通往人工智能的大門

Numpy是一個Python庫/模塊,在Python編程中用於科學計算。在本教程中,你將學習如何在Numpy數組上執行一系列操作,例如以多種方式添加、刪除、排序和操作元素。

Numpy提供一個多維數組對象和其他派生數組,如掩碼數組或掩碼多維數組。

代碼詳解:Numpy——通往人工智能的大門


為什麼使用Numpy?


Numpy模塊提供一個ndarray對象,我們可以用這個對象來對任意維度的數組執行操作。ndarray代表N維數組,其中N是任意數字。這意味著Numpy數組可以是任意維度的數組。

與Python列表相比,Numpy有很多優點。我們可以對Numpy數組執行高性能操作,例如:

1. 數組成員排序

2. 數學和邏輯運算

3. 輸入/輸出功能

4. 統計和線性代數運算

代碼詳解:Numpy——通往人工智能的大門


如何安裝Numpy?


想要安裝Numpy,需要在電腦系統上安裝Python和Pip。

在Windows操作系統上執行以下命令:

pip install numpy

現在可以像這樣在腳本中導入Numpy:

import numpy


代碼詳解: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——通往人工智能的大門


添加列


使用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開始。

代碼詳解:Numpy——通往人工智能的大門


添加行


在本節中,我們將使用append()方法向數組添加行。此方法就像在數組中添加元素一樣簡單。請看以下示例:

a = numpy.array([[1, 2, 3], [4, 5, 6]])
newArray = numpy.append(a, [[50, 60, 70]], axis = 0)


代碼詳解:Numpy——通往人工智能的大門


刪除元素

可以使用NumPy模塊的delete()方法刪除NumPy數組元素,以下示例對此進行了演示:

a = numpy.array([1, 2, 3])
newArray = numpy.delete(a, 1, axis = 0)


輸出如下:

在上面的例子中,可以看到一個單維數組。delete()方法從數組中刪除索引1處的元素。

代碼詳解:Numpy——通往人工智能的大門


刪除行


同樣,可以使用delete()方法刪除行。

請看以下示例,從二維數組中刪除了一行:

a = numpy.array([[1, 2, 3], [4, 5, 6], [10, 20, 30]])
newArray = numpy.delete(a, 1, axis = 0)


在delete()方法中,首先給出數組,然後給出要刪除元素的索引。在上面的示例中,刪除索引為1的第二個元素。

代碼詳解:Numpy——通往人工智能的大門


檢查 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——通往人工智能的大門


查找值的索引


使用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——通往人工智能的大門


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:])


代碼詳解:Numpy——通往人工智能的大門


將函數應用於所有數組元素


在下面的示例中,我們將創建一個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 數組長度


你可以通過使用NumPy模塊的size屬性來獲取NumPy數組的長度,如下例所示:

import numpy
a = numpy.array([1, 2, 3, 4, 5, 6])
print("The size of array = ", a.size)


代碼詳解:Numpy——通往人工智能的大門


從列表中創建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數組轉換為列表


想要將數組轉換為列表,我們可以使用NumPy模塊的tolist()方法。

請看以下代碼:

import numpy 

a = numpy.array([1, 2, 3, 4, 5])
print("Array to list = ", a.tolist())


在這段代碼中,我們簡單地運用了能將數組轉換為列表的tolist()方法。然後將新創建的列表打印到輸出屏幕。

代碼詳解:Numpy——通往人工智能的大門


從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 數組排序


可以使用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”被傳遞給排序函數。其輸出如下:

代碼詳解:Numpy——通往人工智能的大門


規範化數組


規範化數組是將數組值設置為某個定義範圍內的過程。例如,我們可以說我們想要規範化一個介於-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 = \\n", x)


代碼詳解:Numpy——通往人工智能的大門


數組索引


索引指的是數組的一個元素。在以下示例中,我們在單維和二維數組中都使用了索引:

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——通往人工智能的大門


將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是通往人工智能的大門。

代碼詳解:Numpy——通往人工智能的大門



分享到:


相關文章: