计算机视觉系列–Numpy基础

Numpy是python中非常常用的库,这里我们介绍一些numpy的常见语法。

import numpy as np	#使用别名,方便

创建数组

Numpy中创建的数组类型为’‘ndarray’’,以下总结一些常见的创建Numpy数组的方法。

函数说明
np.zeros((shape))创建一个shape形状的零数组
np.ones((shape))创建一个shape形状的全1数组
np.full((shape),num)创建一个shape形状的值全为num的数组
np.eye(n)创建一个n * n形状的单位数组
np.random.random((shape))创建一个shape形状的随机数组
np.arange(begin,end,step)以begin为起点,以step为步长累加,直到不超过end(且不等于end),默认step=1
np.linspace(begin,end,n)将区间[begin,end]切分为n等份
np.array(list|tuple)通过list或tuple创建numpy数组

数组属性

一下总结一些numpy数组的常见属性。

属性说明
a.dtype返回数组中元素的类型
a.size返回数组中元素的总个数
a.shape返回数组的形状
a.itemsize返回数组中每一个元素占用的字节数
a.ndim返回数组的维数

基本运算

运算说明
a.reshape((shape))调整数组形状
a * b数组元素对应元素相乘,线性代数中的点乘
a.dot(b)矩阵相乘,线性代数中的矩阵乘法,特别注意!
a.sum()/np.sum(a,axis)求数组元素之和,使用axis也可以求各个维度之和
a.min()/np.min(a)求数组最小值
a.max()/np.max(a)求数组最大值
a.cumsum()递归相加
a.T获取数组的转置矩阵

常用函数

下面总结一些本人经常遇到的函数和用法。

numpy中的切片

numpy中的切片可以说是最常用的语法了,下面介绍常见的几种用法。

  • 花式索引
    花式索引就是使用我们想要的特定索引序列对数组进行索引。
a=np.arange(0,100,10)
indices=[1,5,-1]
b=a[indices]
print(a)	#[ 0 10 20 30 40 50 60 70 80 90]
print(b)	#[10 50 90]
  • 布尔屏蔽
a=np.linspace(0,10,10)
b=np.sin(a)
print(a)	#[ 0.          1.11111111  2.22222222  3.33333333  4.44444444  5.55555556  6.66666667  7.77777778  8.88888889 10.        ]
print(b)	#[ 0.          0.8961922   0.79522006 -0.19056796 -0.96431712 -0.66510151   0.37415123  0.99709789  0.51060568 -0.54402111]
mask=b>0	#获取到一个布尔数组
print(b[mask])	#[0.8961922  0.79522006 0.37415123 0.99709789 0.51060568]

  • 缺省索引
a=np.arange(0,100,10)
b=a[:5]
c=a[a>=50]
print(b)	#[ 0 10 20 30 40]
print(c)	#[50 60 70 80 90]
numpy广播机制

建议参考一些博客,这里不介绍了(相对较复杂)。

对numpy中axis的理解

参考:彻底理解numpy中的axis

这个东西时间久了也会忘记,所以最好的办法就是用的时候在python终端比较一下axis=0和axis=1的区别(或者看文档例子)。

numpy数组的拼接

numpy中常用的拼接函数有一下几种:

  • np.append()
  • np.hstack()
  • np.vstack()
np.append()

在这里插入图片描述
当axis=None的时候对arr和values没有形状要求,最终结果会被展平。当axis不等于None的时候,arr和values的形状要相同。(直接翻译文档了)

np.hstack()

np.hstack()进行水平的拼接。

a=np.array((1,2,3))
b=np.array((2,3,4))
print(np.hstack((a,b)))	#array([1,2,3,2,3,4])
a=np.array([[1],[2],[3]])
b=np.array([[4],[5],[6]])
print(np.hstack(a,b))	#array([[1,4],[2,5],[3,6]])
np.vstack()

np.vstack()进行垂直的拼接。

a=np.array([1,2,3])
b=np.array([2,3,4])
print(np.vstack((a,b)))	#array([[1,2,3],[2,3,4]])
a=np.array([[1],[2],[3]])
b=np.array([[4],[5],[6]])
print(np.vstack((a,b)))	#array([[1],[2],[3],[4],[5],[6]])

以上就是numpy的一些基本用法了,重点需要理解切片和广播机制,一些函数用法在实际应用中查看文档即可。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值