1. 程式人生 > >Numpy詳細教程

Numpy詳細教程

Numpy簡介

NumPy 是一個 Python 包。 它代表 “Numeric Python”。 它是一個由多維陣列物件和用於處理陣列的例程集合組成的庫。 Numeric,即 NumPy 的前身,是由 Jim Hugunin 開發的。 也開發了另一個包 Numarray ,它擁有一些額外的功能。 2005年,Travis Oliphant 通過將 Numarray 的功能整合到 Numeric 包中來建立 NumPy 包。 這個開源專案有很多貢獻者。

Numpy基礎

NumPy的主要物件是同種元素的多維陣列。這是一個所有的元素都是一種型別、通過一個正整數元組索引的元素表格(通常是元素是數字)。在NumPy中維度

(dimensions)叫做(axes),軸的個數叫做(rank)。

例如,在3D空間一個點的座標[1, 2, 3]是一個秩為1的陣列,因為它只有一個軸。那個軸長度為3.又例如,在以下例子中,陣列的秩為2(它有兩個維度).第一個維度長度為2,第二個維度長度為3.

  1. [[1.,0.,0.],

  2. [0.,1.,2.]]

NumPy的陣列類被稱作ndarray。通常被稱作陣列。注意numpy.array和標準Python庫類array.array並不相同,後者只處理一維陣列和提供少量功能。更多重要ndarray物件屬性有:

  • ndarray.ndim: 陣列軸的個數,在python的世界中,軸的個數被稱作秩

  • ndarray.shape:
    陣列的維度。這是一個指示陣列在每個維度上大小的整數元組。例如一個n排m列的矩陣,它的shape屬性將是(2,3),這個元組的長度顯然是秩,即維度或者ndim屬性

  • ndarray.size 陣列元素的總個數,等於shape屬性中元組元素的乘積。

  • ndarray.dtype 一個用來描述陣列中元素型別的物件,可以通過創造或指定dtype使用標準Python型別。另外NumPy提供它自己的資料型別。

  • ndarray.itemsize 陣列中每個元素的位元組大小。例如,一個元素型別為float64的陣列itemsiz屬性值為8(=64/8),又如,一個元素型別為complex32的陣列item屬性為4(=32/8).

  • ndarray.data 包含實際陣列元素的緩衝區,通常我們不需要使用這個屬性,因為我們總是通過索引來使用陣列中的元素。

例如:

  1. >>>from

    numpy  import*

  2. >>> a = arange(15).reshape(3,5)

  3. >>> a

  4. array([[0,1,2,3,4],

  5. [5,6,7,8,9],

  6. [10,11,12,13,14]])

  7. >>> a.shape

  8. (3,5)

  9. >>> a.ndim

  10. 2

  11. >>> a.dtype.name

  12. 'int32'

  13. >>> a.itemsize

  14. 4

  15. >>> a.size

  16. 15

  17. >>> type(a)

  18. numpy.ndarray

  19. >>> b = array([6,7,8])

  20. >>> b

  21. array([6,7,8])

  22. >>> type(b)

  23. numpy.ndarray

建立陣列

有好幾種建立陣列的方法。 例如,你可以使用 array函式從常規的Python列表和元組創造陣列。所建立的陣列型別由原序列中的元素型別推導而來。

  1. >>>from numpy  import*

  2. >>> a = array([2,3,4])

  3. >>> a

  4. array([2,3,4])

  5. >>> a.dtype

  6. dtype('int32')

  7. >>> b = array([1.2,3.5,5.1])

  8. >>> b.dtype

  9. dtype('float64')一個常見的錯誤包括用多個數值引數呼叫`array`而不是提供一個由數值組成的列表作為一個引數。

  10. >>> a = array(1,2,3,4)# WRONG

  11. >>> a = array([1,2,3,4])# RIGHT

陣列將序列包含序列轉化成二維的陣列,序列包含序列包含序列轉化成三維陣列等等。

  1. >>> b = array([(1.5,2,3),(4,5,6)])

  2. >>> b

  3. array([[1.5,2.,3.],

  4. [4.,5.,6.]])

陣列型別可以在建立時顯示指定

  1. >>> c = array([[1,2],[3,4]], dtype=complex )

  2. >>> c

  3. array([[1.+0.j,2.+0.j],

  4. [3.+0.j,4.+0.j]])

通常,陣列的元素開始都是未知的,但是它的大小已知。因此,NumPy提供了一些使用佔位符建立陣列的函式。這最小化了擴充套件陣列的需要和高昂的運算代價。

函式 function建立一個全是0的陣列,函式 ones建立一個全1的陣列,函式 empty建立一個內容隨機並且依賴與記憶體狀態的陣列。預設建立的陣列型別(dtype)都是float64。

  1. >>>