代碼詳解: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:讀芯術 |