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物件屬性有:
- 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:包含實際陣列元素的緩衝區,由於一般通過陣列的索引獲取元素,所以通常不需要使用這個屬性。
程式碼:
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。
可以在建立時顯式指定陣列中元素的型別:
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.])