numpy 使用入門

numpy 使用入門
本文爲 落魄陶陶 原創,轉載請註明出處

產生數組

從列表產生數組

    l=[1,2,4]
    a =np.array(l)

從列表傳入

    a = np.array([1,2,3])

生成全0數組

    np.zeros(5)

生成全1的數組

    np.ones(5,dtype=int)

使用fill填充

    a = np.array([1,2,4,5])
    a.fill(5) # 會自動根據a的dtype進行類型轉換

數組中要求所有元素的dtype是一樣的

    a = a.astype(float)
    a.fill(2.5)

## 特定方法生成數組
## 生成整數序列
```python
    a = np.arange(1,10) #1-9
    a = np.arange(1,10,2)

生成等差數列

    a = np.linspace(1,10,10) # 1-10 10個數

生成隨機數

    a = np.random.rand(10) # 0-1之間
    a = np.random.randn(10) # 標準正態分佈
    a = np.random.randint(1,10,10) # 1-10之間10個整數

數組屬性

    type(a)

查看數據類型

    a.dtype

查看形狀

    a.shape

查看個數

    a.size

查看維度

    a.ndim

索引和切片

索引,修改第一個元素

    a = np.array([0,1,2,3])
    a[0]
    a[0]=5

切片,支持負索引

    a[1:3] # 左閉右開
    a[1:-2] # 左閉右開,從1到倒數第三
    a[-4.3] 

省略參數

    a[-2:]
    a[::2]

多維數組及其屬性

生成多維數組

    a = np.array([[1,2,3],[4,5,6]]

查看形狀

    a.shape

查看長度

    a.size

查看維度

    a.ndim

多維數組索引

    a[1,2]

索引整行

a[1]

索引整列

    a[:,1]

多維數組切片

第一行第四第五兩個元素

    a[1,[3:5]]

最後兩行的最後兩列

    a[4:,4:]

第三列

    a[:,2]

## 第三,第五行奇數列
```python
    a[2::2,1::2]

切片是引用

切片內容改變,引用值也改變
使用copy()產生副本

    b = a[2:4].copy()

# 花式索引
```python
    a = np,arange(0,100,10)

一維花式索引

    index = [1,2,-3]
    y = a[index]
    mask=np.array([0,2,2,2,2,11,1,0,0],dtype=bool)
    a[mask]

二維花式索引

    a = np.array([range(10),range(10,20),range(20,30)])

對角線五個

    a[(0,1,2,3,4),(1,2,3,4,5)]

最後三行1,3,5列

    a[3:,[0,2,4]]

mask索引

    mask = np.array([1,0,1,0,0,1],dtype=bool)
    a[mask,2]

花式索引返回的是副本,不是引用

不完全索引

只給定行索引,返回整行

    y=a[:3]
    con = np.array([0,1,1,0,1,0],dtype=bool)
    a[con]

where語句

一維數組

    a = np.array([0,10,24,15])
    a>10 # 返回bool array
    np.where(a>0) # 返回數組大於10的索引位置
    a[a>10] # 返回>10的值
    a[np.where(a>10)]

數組類型

類型轉換

    a = np.array([1.5,-3],dtype=float)

asarray

    a = np.array([1,2,4])
    np.asarray(a,dtype=float)

astype

    a = np.arange([1,2,3])
    a.astype() # 返回新的數組

數組排序

    np.sort(a) # 返回新的數組
    np.argsort(a) # 返回從小到大的排列在數組中的索引位置
    np.sum(a) 
    a.sum()
    np.max(a)
    a.max()
    np.min(a)
    a.min()
    np.mean(a)
    a.mean()
    np.std(a) # 標準差
    a.std()

相關係數矩陣 TODO

多維數組操作

數組形狀

    a = np.arange(6)
    a.shape=2,3 # 改變原來結構
    
    a.reshape(2,3) # 返回新的數組 

轉置

    a.T
    a.transpose()

數組連接

    concatenate((a0,a1,...),axis=0) # 
    vstack()
    hstack()
    dstack()
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章