numpy库学习

    xiaoxiao2023-10-10  171

    学习计算机视觉学习需要用到python的扩展库numpy进行数据分析,这篇文章仅记录numpy学习笔记

    安装numpy以及包管理工具pip的使用

    命令行输入:

    curl https://bootstrap.pypa.io/get-pip.py -o get-pip.py # 下载安装脚本

    使用pip -v可以查看是否安装成功 在项目目录下pip install numpy,其他包安装也如此

    numpy创建一个矩阵以及基本操作

    import numpy as np list=[[1,2,3],[4,5,6]] #将列表转为一个矩阵的方法 # 定义创建类型 使用arr.dtype获取 arr=np.array(list,dtype=np.int) # 3行4列的0矩阵 zero=np.zeros((3,4)) # 全部为1 ones=np.ones((3,4)) # 为空 生成都接近0的数不是0 empty=np.empty((3,4)) # reshape重新定义形状 arrange=np.arange(10,20,2).reshape((3,4)) # 1-10 分为20端 arrange1=np.linspace(1,10,20) print("维数number of dim:",arr.ndim) # 几行几列 print("形状shape:",arr.shape) # 总共元素 print("大小size:",arr.size) 矩阵运算

    普通+ - * / 不列举 为逐个运算

    import numpy as np a=np.array([[10,20],[30,40]]) b=np.arange(4).reshape((2,2)) # 对a中每个值求sin 使用numpy带的方法 # 其他三角函数同样 => [-5.44021111 9.12945251 -9.88031624 7.4511316 ] c=10*np.sin(a) # b中小于3的 => [ True True True False] c=b<3 print("矩阵相乘:",np.dot(a,b),a.dot(b)) print("随机生成矩阵:",np.random.random((2,4))) print("求和在维度为0(列) 1(行):",np.sum(b,axis=0)) print("求最小值/最大值:",np.min(a),np.max(a)) print("最小值/最大值的索引:",np.argmin(a),np.argmax(a)) print("平均值,中位值,",np.mean(a),np.average(a),np.median(a)) print("输出累加矩阵:",np.cumsum(b)) print("前向差分后的矩阵:",np.diff(b)) print("输出非零值得位置(以两个数组输出,一个为行位置,一个为列位置)",np.nonzero(b)) print("排序(逐行的排序)",np.sort(b)) print("矩阵的转置(行变列,列变行)",a.T,np.transpose(a)) print("矩阵的上下限设置,(小于5的为5,大于9的为9,中间不变)",np.clip(a,5,9))

    几乎所有的方法都可以指定axis=0参数,为0对纵向进行运算,为1对横向进行计算

    nmupy索引import numpy as np a=np.arange(3,15).reshape((3,4)) print(a[0][1]) print(a[1]) print("输出第2行所有的数:",a[1,:]) print("输出第2行第二个和第三个数:",a[1,1:3]) print("转化为只有1行的序列:",a.flatten()) #必须为一维的 print("从一维数组中随机抽取两个数:",np.random.choice(a,2,replace=False)) #迭代interation生成行和列 for row in a: print(row) for column in a.T: print(column) # 迭代生成每一项 for item in a.flat: print(item) nmupy array的合并import numpy as np # 其实还是一个序列,直接使用a.T是没有作用的 a=np.array([1,1,1]) b=np.array([2,2,2]) print("横向合并hstack horizontal stack:",np.hstack((a,b))) print("纵向合并vstack vertical stack:",np.vstack((a,b))) # print(a.T) print("在列上添加一个维度:",a[:,np.newaxis]) print("在行上添加一个维度",a[np.newaxis,:]) print("在列方向上进行合并 为axis=1在行方向上进行合并",np.concatenate((a,b),axis=0)) nmupy array的分割import numpy as np a=np.arange(12).reshape((3,4)) # 不能进行不等分割 print("对矩阵进行横向分割",np.split(a,2,axis=1)) print("对矩阵进行不等分割:",np.array_split(a,3,axis=1)) # 更为简单的分割 print("纵向分割:",np.vsplit(a,3)) print("横向分割:",np.hsplit(a,4)) deep copyimport numpy as np a=np.arange(4) b=a # deep copy c=a.copy() print(a is b)#True print(c is a)#False
    最新回复(0)