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()