1. 程式人生 > >Python之陣列(array)使用方法總結與Numpy中的陣列用法

Python之陣列(array)使用方法總結與Numpy中的陣列用法

Python:
array使用方法:
Type code C Type Minimum size in bytes
‘c’ character          1
‘b’ signed integer       1
‘B’ unsigned integer       1
‘u’ Unicode character       2
‘h’ signed integer        2
‘H’ unsigned integer       2
‘i’ signed integer        2
‘I’ unsigned integer        2
‘l’ signed integer        4
‘L’ unsigned integer        4
‘f’ floating point         4
‘d’ floating point         8

from array import *
myarray=array("l") //表示建立一個interger型別的陣列
myarray.append(3)//追加元素
myarray.pop()//刪除最後一個
myarray.remove(X)//刪除指定的一個X
num=myarray[0]//取第一個值
myarray.insert(3,10)//3表示下標
myarray.reverse()//陣列反序

Numpy:
NumPy陣列是一個多維陣列物件,稱為ndarray。其由兩部分組成:

實際的資料
描述這些資料的元資料
大部分操作僅針對於元資料,而不改變底層實際的資料。

關於NumPy陣列有幾點必需瞭解的:

NumPy陣列的下標從0開始。
同一個NumPy陣列中所有元素的型別必須是相同的。

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

NumPy的陣列中比較重要ndarray物件屬性有:

  1. ndarray.ndim:陣列的維數(即陣列軸的個數),等於秩。最常見的為二維陣列(矩陣)。
  2. ndarray.shape:陣列的維度。為一個表示陣列在每個維度上大小的整數元組。例如二維陣列中,表示陣列的“行數”和“列數”。ndarray.shape返回一個元組,這個元組的長度就是維度的數目,即ndim屬性。
  3. ndarray.size:陣列元素的總個數,等於shape屬性中元組元素的乘積。
  4. ndarray.dtype:表示陣列中元素型別的物件,可使用標準的Python型別建立或指定dtype。另外也可使用前一篇文章中介紹的NumPy提供的資料型別。
  5. ndarray.itemsize:陣列中每個元素的位元組大小。例如,一個元素型別為float64的陣列itemsiz屬性值為8(float64佔用64個bits,每個位元組長度為8,所以64/8,佔用8個位元組),又如,一個元素型別為complex32的陣列item屬性為4(32/8)。
  6. ndarray.data:包含實際陣列元素的緩衝區,由於一般通過陣列的索引獲取元素,所以通常不需要使用這個屬性。

程式碼:

from numpy import * 

a=array([[1,2],[2,3]])
a.ndim//陣列的維數
2
a.shape//陣列的維度,即行數和列數
(2L, 2L)
a.dtype//陣列中元素的型別
dtype('int32')
a.size//陣列元素的總個數
4

注意:

使用array函式建立時,引數必須是由方括號括起來的列表,而不能使用多個數值作為引數呼叫array。

  • >>> a = array(1,2,3,4)    # 錯誤
  • >>> a = array([1,2,3,4])  # 正確
  • 可以在建立時顯式指定陣列中元素的型別:

  • >>> c = array( [ [1,2], [3,4] ], dtype=complex)  
  • >>> c  
  •     array([[ 1.+0.j,  2.+0.j],  
  •        [ 3.+0.j,  4.+0.j]])  
  • NumPy提供一個類似arange的函式返回一個數列形式的陣列:
    arange(4)
    輸出—-array([0, 1, 2, 3])
    arange(10,30,5)//10-30步長為5
    輸出—-array([10, 15, 20, 25])

    當arange使用浮點數引數時,由於浮點數精度有限,通常無法預測獲得的元素個數。因此,最好使用函式linspace去接收我們想要的元素個數來代替用range來指定步長。
    import numpy as np
    np.linspace(10,30,5)//這裡5表示的是要輸出5個數
    輸出—array([ 10., 15., 20., 25., 30.])