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()
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章