天天看點

numpy 是否為零_【精讀】Numpy詳解

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

numpy 是否為零_【精讀】Numpy詳解

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

numpy 是否為零_【精讀】Numpy詳解

推薦閱讀

GitHub超 7.9 萬星,最全Python入門算法!

【原來如此】圖文并茂,一文讀懂"自注意力"背後的技術!

論文繪圖神器來了:一行代碼繪制不同期刊格式圖表,哈佛博士後開源

這 68 個 Python 内置函數請收好!

長文 | 盤點 YOLOv4 這些鮮為人知的特性!

numpy 是否為零_【精讀】Numpy詳解
numpy 是否為零_【精讀】Numpy詳解

繼續閱讀