NumPy數組


NumPy數組

NumPy數組是一個多維數組對象,稱為ndarray。它由兩部分組成:

  • 實際的數據
  • 描述這些數據的元數據

大部分的操作只針對於元數據,而不改變底層實際的數據。

關於NumPy數組有以下幾點是必須了解的:

  •  數組的下標是從0開始的
  •  同一個NumPy數組中所有的元素的類型都必須是相同的。

NumPy數組屬性

在詳細介紹NumPy數組之前。先詳細介紹下NumPy數組的基本屬性。NumPy數組的維數稱為秩(rank),一維數組的秩為1,二維數組的秩為2,以此類推。在NumPy中,每一個線性的數組稱為是一個軸(axes),秩其實是描述軸的數量。比如說,二維數組相當於是兩個一維數組,其中第一個一維數組中每個元素又是一個一維數組。所以一維數組就是NumPy中的軸(axes),第一個軸相當於是底層數組,第二個軸是底層數組里的數組。而軸的數量——秩,就是數組的維數。

NumPy的數組中比較重要ndarray對象屬性有:

  • ndarray.ndim:數組的維數(即數組軸的個數),等於秩。最常見的為二維數組(矩陣)。

  • ndarray.shape:數組的維度。為一個表示數組在每個維度上大小的整數元組。例如二維數組中,表示數組的“行數”和“列數”。ndarray.shape返回一個元組,這個元組的長度就是維度的數目,即ndim屬性。

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

  • ndarray.dtype:表示數組中元素類型的對象,可使用標准的Python類型創建或指定dtype。另外也可使用前一篇文章中介紹的NumPy提供的數據類型。

  • ndarray.itemsize:數組中每個元素的字節大小。例如,一個元素類型為float64的數組itemsiz屬性值為8(float64占用64個bits,每個字節長度為8,所以64/8,占用8個字節),又如,一個元素類型為complex32的數組item屬性為4(32/8)。

  • ndarray.data:包含實際數組元素的緩沖區,由於一般通過數組的索引獲取元素,所以通常不需要使用這個屬性。

創建數組

  先介紹一下創建數組。創建數組的方法有很多種。比如可以使用array函數從常規的Python列表和遠足創造數組,所創建的類型由元序列中的元素推到而來

1 import numpy as np#引入模塊
2 a=np.array([2,3,4])
3 print(a)
4 print(a.dtype)#查看數組的類型
5 b=np.array([1.2,3.5,5.1])
6 print(b.dtype)

注意使用array函數創建時,參數必須是由方括號括起來的列表,不能使用多個數值作為參數調用array。

1 a=np.array(1,2,3,4)#錯誤
2 a=np.array([1,2,3,4])#正確

可以使用雙重序列來表示二維的數組,三重序列來表示三維數組,以此類推。

1 b=np.array([[1.5,2,3],[4,5,6]])
2 print(b)
3 print(b.ndim)
4 #兩種方法都可以創建二維 數組
5 
6 b=np.array([(1.5,2,3),(4,5,6)])
7 print(b)
8 print(b.ndim)

可以在創建時顯式指定數組中元素的類型

1 a=np.array([[1,2],[3,4]],dtype=complex)
2 print(a)

通常,剛開始時數組的元素未知,而數組的大小已知。因此,NumPy提供了一些使用占位符創建數組的函數。這些函數有助於滿足除了數組擴展的需要,同時降低了高昂的運算開銷。

用函數zeros可創建一個全是0的數組,用函數ones可創建一個全為1的數組,函數empty創建一個內容隨機並且依賴與內存狀態的數組。默認創建的數組類型(dtype)都是float64。

可以用d.dtype.itemsize來查看數組中元素占用的字節數目。

1 a=np.zeros((3,4))
2 print(a)

也可以指定類型

1 a=np.zeros((3,4),dtype=int)
2 print(a)

官方文檔 :     https://docs.scipy.org/doc/numpy-dev/user/quickstart.html

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM