Python Numpy库 常用函数整理以及心得
opencv提供相当丰富的函数功能。python的numpy库与C++的Eigen库兼容其图像矩阵格式。多数操作可在两者之间互相切换。
opencv提供很多矩阵操作如cv2.add()
,但我认为不如使用numpy库的矩阵运算,已经对运算做重载操作,如mat = img1 + img2
,速度快于opencv。
这里补一下常用numpy函数。我自己认为的,如果有其他的,可以在评论留言,我看时间添加。参考numpy官方文档。
常用矩阵函数
基本矩阵操作
- 矩阵变形
- 可代替
numpy.ravel()
,numpy.squeeze()
,numpy.flatten()
,不改变元素个数下对矩阵或向量变形。a = numpy.arange(6).reshape((3, 2)) a array([[0, 1], [2, 3], [4, 5]])
- 矩阵切片
- 取出子向量或者子矩阵,相当常用。如目标识别,语义分割。
x = numpy.array([0, 1, 2, 3, 4, 5, 6, 7, 8, 9]) x[1:7:2] #Out: #array([1, 3, 5]) x[-2:10] array([8, 9]) x[-3:3:-1] #Out: #array([7, 6, 5, 4])
- 矩阵拼接
- 常用于对数据做批处理。例如,将多个数据拼接,1维信号变为2维矩阵通过分类器。多张图片叠为3维tensor,通过深度网络。具体查阅批处理操作。
numpy.concatenate((a1, a2, ...), axis=0, out=None, dtype=None, casting="same_kind")
- (a1, a2, …): 待拼接矩阵或向量元组。
- axis: 选中希望拼接的维度,默认为0。
元组中矩阵的其他维度必须一致,不然返回维度不一致- 其他为可选项,不多做介绍,至少我不用。
- 当 axis为 0,1,2时,分别对应
numpy.hstack()
,numpy.vstack()
,numpy.dstack()
。a0 = numpy.linspace(1,10,10).reshape(2,5) a1 = numpy.linspace(1,15,15).reshape(3,5) a2 = numpy.concatenate(