NumPy 數組大全

NumPy 是一個Python 庫,用於 Python 編程中的科學計算。在本教程中,你將學習如何在 NumPy 數組上以多種方式添加、刪除、排序和操做元素。python

NumPy 提供了一個多維數組對象和其餘派生數組,例如掩碼數組和掩碼多維數組。編程

爲何要用 NumPy

NumPy 提供了一個 ndarray 對象,可使用它來對任何維度的數組進行操做。 ndarray 表明 N 維數組,其中 N 是任意數字。這意味着 NumPy 數組能夠是任何維度的。數組

與 Python 的 List 相比,NumPy 具備許多優點。咱們能夠在 NumPy 陣列上執行高性能操做,例如:bash

  1. 對數組成員進行排序
  2. 數學和邏輯運算
  3. 輸入/輸出功能
  4. 統計和線性代數運算

安裝 NumPy

要安裝NumPy,你的電腦上要先有 Python 和 Pip。app

在終端中運行如下命令:機器學習

pip install numpy

而後你就能夠在腳本中導入 NumPy 了,以下所示:ide

import numpy

添加數組元素

能夠用 NumPy 模塊的 append() 方法向 NumPy 數組中添加元素。函數

append() 的語法以下:性能

numpy.append(array, value, axis)

value 會被追加到在數組的末尾,並返回一個包含全部元素的 ndarray。學習

參數 axis 是一個可選的整數,用於定義數組的顯示方式。若是沒有指定,則數組結構將展平,稍後會演示用法。

如下示例,其中首先聲明數組,而後用 append 方法向數組添加更多的值:

import numpy
a = numpy.array([1, 2, 3])
newArray = numpy.append (a, [10, 11, 12])
print(newArray)
# 輸出:[ 1  2  3 10 11 12]

添加一列

也能夠用NumPy 的 append() 方法插入一列。

在下面的例子中,咱們建立了一個二維數組並插入了兩列:

import numpy

a = numpy.array([[1, 2, 3], [4, 5, 6]]) 
b = numpy.array([[400], [800]])
newArray = numpy.append(a, b, axis = 1)
print(newArray)

"""
輸出:
[[  1   2   3 400]
 [  4   5   6 800]]
"""

若是沒有使用 axis 參數,則會輸出:

[  1   2   3   4   5   6 400 800]

這就是數組結構的扁平化。

在 NumPy 中,還能夠用 insert() 方法插入元素或列。 二者之間的區別在於 insert() 方法能夠指定要在哪一個索引處添加元素,但 append() 方法會在數組的末尾添加一個值。

Consider the example below:
考慮如下示例:

import numpy
a = numpy.array([1, 2, 3])
newArray = numpy.insert(a, 1, 90) 
print(newArray)
# 輸出:[ 1 90  2  3]

這裏 insert() 方法在索引1處添加元素。在Python中數組索引從0開始。

追加一行

也能夠用 append() 方法向數組添加行,就像在數組中附加元素同樣簡單:

import numpy
a = numpy.array([[1, 2, 3], [4, 5, 6]])
newArray = numpy.append(a, [[50, 60, 70]], axis = 0)
print(newArray)
"""
輸出「
[[ 1  2  3]
 [ 4  5  6]
 [50 60 70]]
"""

刪除元素

能夠用 NumPy 模塊的 delete() 方法刪除 NumPy 數組元素:

import numpy 
a = numpy.array([1, 2, 3]) 
newArray = numpy.delete(a, 1, axis = 0) 
print(newArray)
# 輸出:[1 3]

在本例子中,咱們有一個一維數組,用 delete() 方法從數組中刪除了索引 1 處的元素。

刪除一行

一樣,你也能夠用 delete() 方法刪除行。

下面的例子中咱們從二維數組中刪除了一行:

import numpy 
a = numpy.array([[1, 2, 3], [4, 5, 6], [10, 20, 30]]) 
newArray = numpy.delete(a, 1, axis = 0)
print(newArray)
"""
輸出:
[[ 1  2  3]
 [10 20 30]]
"""

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") 
else: 
    print("The array = ", a)
# 輸出:The array =  [1 2 3]

在上面的代碼中,數組中有三個元素,所以它不是空的,判斷條件將返回false。若是數組中沒有元素,則 if 條件會變爲 true 而且將打印空消息。若是數組等於:

a = numpy.array([])

上述代碼將會輸出:

The given Array is empty

查找值的索引

要查找值對應的索引,能夠用 NumPy 模塊的 where() 方法,以下例所示:

import numpy
a = numpy.array([1, 2, 3, 4, 5])
print("5 is found at index: ", numpy.where(a == 5))
# 輸出:5 is found at index:  (array([4]),)

若是你只想獲得索引,能夠這樣寫:

import numpy

a = numpy.array([1, 2, 3, 4, 5]) 
index = numpy.where(a == 5)
print("5 is found at index: ", index[0])
#輸出: 5 is found at index:  [4]

NumPy 數組切片

數組切片是從給定數組中提取子集的過程。你能夠用冒號( : )運算符對數組進行切片,並指定數組索引的開始和結束位置,例如:

array[from:to]

下面的例子中提取從索引 2 到索引 5 的元素:

import numpy
a = numpy.array([1, 2, 3, 4, 5, 6, 7, 8])
print("A subset of array a = ", a[2:5])
# 輸出:A subset of array a =  [3 4 5]

若是想要提取最後三個元素,能夠經過用負切片來完成操做,以下所示:

import numpy
a = numpy.array([1, 2, 3, 4, 5, 6, 7, 8])
print("A subset of array a = ", a[-3:])
# 輸出:A subset of array a =  [6 7 8]

將函數做用於全部數組元素

在下面的例子中,咱們將建立一個 lambda 函數,並傳入一個數組,以其應用於全部元素:

import numpy
addition = lambda x: x + 2
a = numpy.array([1, 2, 3, 4, 5, 6])
print("Array after addition function: ", addition(a))
# 輸出:Array after addition function:  [3 4 5 6 7 8]

在此例中,建立了一個 lambda 函數,它使每一個元素都遞增 2。

NumPy 數組的長度

要獲得 NumPy 數組的長度,能夠用 size 屬性,以下所示:

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

從 list 建立 NumPy 數組

假設你有一個列表:

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)
# 輸出:The NumPy array from Python list =  [1 2 3 4 5]

一樣,使用 array() 方法,也能夠從元組建立 NumPy 數組。以下所示:

import numpy
t = (1, 2, 3, 4, 5) 
a = numpy.array(t) 
print("The NumPy array from Python Tuple = ", a)
# 輸出:The NumPy array from Python Tuple =  [1 2 3 4 5]

將 NumPy 數組轉換爲 list

要將數組轉換爲list,可使用 NumPy 模塊的 tolist()方法。

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

在這段代碼中,咱們簡單地調用了 tolist() 方法,該方法將數組轉換爲列表。而後將新建立的列表打印到輸出屏幕。

把 NumPy 數組導出爲 CSV

要將數組導出爲 CSV 文件,能夠用 NumPy 模塊的 savetxt() 方法,以下所示:

import numpy 
a = numpy.array([1, 2, 3, 4, 5]) 
numpy.savetxt("myArray.csv", a)

此代碼將在 Python 代碼文件所在路徑下生成 CSV 文件。固然你也能夠指定路徑。

該文件的內容以下:

1.000000000000000000e+00
2.000000000000000000e+00
3.000000000000000000e+00
4.000000000000000000e+00
5.000000000000000000e+00

你能夠把額外填充的零刪除,以下所示:

numpy.savetxt("myArray.csv", a,fmt='%.2f')

對 NumPy 數組排序

能夠用 NumPy 模塊的 sort() 方法對 NumPy 數組進行排序:

sort() 函數有一個可選參數 axis(整數),默認爲 -1axis 指定咱們要對數組進行排序的軸。 -1 表示將根據最後一個軸對數組進行排序。

import numpy 
a = numpy.array([16, 3, 2, 6, 8, 10, 1]) 
print("Sorted array = ", numpy.sort(a))
# 輸出:Sorted array =  [ 1  2  3  6  8 10 16]

在這個例子中,咱們在 print 語句中調用了 sort() 方法。數組 a 被傳遞給 sort 函數。

歸一化數組

歸一化數組是指將數組的值置於某個定義範圍的過程。例如,咱們想要在 -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)
"""
輸出:
After normalization array x =
 [0.11111111 0.33333333 0.         0.27777778 0.44444444 1.
 0.05555556]
"""

數組索引

索引指向數組中的一個元素。在下面的例子中,分別用到了一維和二維數組中的索引:

import numpy 
a = numpy.array([20, 13, 42, 86, 81, 9, 11]) 
print("Element at index 3 = ", a[3])
# 輸出:Element at index 3 =  86

下面是二維數組:

import numpy 
a = numpy.array([[20, 13, 42], [86, 81, 9]]) 
print("Element at index a[1][2] = ", a[1][2])
# 輸出:Element at index a[1][2] =  9

索引 [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)
# 輸出:The new array =  [ 1  2  3  4  5 10 20 30 40 50]

在此例中,建立兩個 NumPy 數組 ab 。而後把兩個數組傳給 append()。當數組 b 做爲第二個參數傳遞時,將被添加到數組 a 的末尾。

總結

正如你們所見,NumPy 數組用起來很是簡單。在使用不少機器學習庫時,NumPy 數組很是重要。能夠說NumPy 是人工智能的大門。

相關文章
相關標籤/搜索