當前位置:
首頁 > 科技 > 代碼詳解:Numpy——通往人工智慧的大門

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

全文共2611字,預計學習時長5分鐘

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)

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

留言 點贊 發個朋友圈

我們一起分享AI學習與發展的乾貨

編譯組:王玲、趙璇


喜歡這篇文章嗎?立刻分享出去讓更多人知道吧!

本站內容充實豐富,博大精深,小編精選每日熱門資訊,隨時更新,點擊「搶先收到最新資訊」瀏覽吧!


請您繼續閱讀更多來自 讀芯術 的精彩文章:

採用深度分析回歸模型進行基於內容的在線請願流行度預測
TF-Ranking:最先進的排序學習TensorFlow庫

TAG:讀芯術 |