zoukankan      html  css  js  c++  java
  • Python Numpy,学Python不得不削的矩形计算库

    矩阵计算库
    numpy库的使用是sklearn库和opencv库的基础,主要用于矩阵的计算。
    Numpy 的主要用途是以数组的形式进行数据操作。机器学习中大多数操作都是数学操作,而 Numpy 使这些操作变得简单

    1.创建Numpy数组对象
    Numpy 的数值类型实际上是 dtype 对象的实例,并对应唯一的字符。
    包括 np.bool_ ,np.int32,np.float32等。

    ndarray.ndim 秩,即轴的数量或维度的数量
    ndarray.shape 数组的维度,对于矩阵,n行m列
    ndarray.size 数组元素的总个数,相当于 .shape 中n*m的值
    ndarray.dtype ndarray 对象的元素类型

    例:

    data = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19] 
    a = np.array(data)    #一维数组,20 个数 
    a = np.linspace(0,20, 20)    #一维数组,将 0-20 等分为 20 个数字 
    a = np.arange(20)    #简洁方式
    b = a.reshape(4,5) #将一维数组 a 转换为维数(4,5)的数组 
    c = a.reshape(2,5,2) #将一维数组 a 转换为维数(2,5,2)的数组

    2.访问数组
    控制遍历顺序

    for x in np.nditer(a, order='F'): 列序优先; 
    for x in np.nditer(a.T, order='C'): 行序优先;

    例:

    a = np.arange(24) a = a.reshape(3,8) 
    a[2,3]    #提取数组 a 中行 2 列 3 的数值 
    a[2,3] = 100 #修改数组 a 行 2 列 3 的数值

    a[1:3,3:7] #提取数组 a 中 1~2 行,3~6 列的子数组

    **#[[11 12 13 14]** 
    **# [20 20 21 22]]** 

    a[1:3,3:7] = np.zeros((2,4)) #将数组 a 中 1~2 行,3~6 列 的数值置换为 0

    **#[[ 0  1  2  3  4  5  6  7]** 
    **# [ 8  9 10  0  0  0  0 15]** 
    **# [16 17 18  0  0  0  0 23]]** 

    a[[0,1],[0,2]] = -1 #将数组 a 中(0,0),(1,2)两个位置的数值置换为-1

    **#[[-1  1  2  3  4  5  6  7]** 
    **# [ 8  9 -1  0  0  0  0 15]** 
    **# [16 17 18  0  0  0  0 23]]**

    3.对数组进行切片与拼接
    Numpy 数组可以像Python列表一样被索引,切片和迭代。
    也可以在多维数组上做同样的操作,只需使用逗号分隔即可。
    例:

    a = np.arange(24)   
    a.reshape(3,8) 
    b = np.copy(a)                    
    a[0][0] = 100
    c = np.hstack((a,b))    #沿 1 维,将 a,b 拼接成一个新数组 
    c = np.concatenate ((a,b), axis=1)    #沿 1 维,将 a,b 拼接成一个新数组 
    #[[100, 1, 2, 3, 4, 5, 6, 7, 0, 1, 2, 3, 4, 5, 6, 7], 
    #[ 8,  9, -1,  0,  0,  0,  0, 15,  8,  9, 10, 11, 12, 13, 14, 15], 
    #[16, 17, 18,  0,  0,  0,  0, 23, 16, 17, 18, 19, 20, 21, 22, 23]]

    4.对数组元素进行查找
    例:

    a[1:3,3:7] = np.zeros((2,4))
    np.where(a==0)    #获得符合条件的行列位置 
    #(array([1, 1, 1, 1, 2, 2, 2, 2]), array([3, 4, 5, 6, 3, 4, 5, 6])) #index b[np.where(a==0)]    #数组 b 在对应符合条件 a 位置上的数值 
    #array([11, 12, 13, 14, 19, 20, 21, 22]) #value 
    np.where(a == 0, 1, 0) #等于0的位置,输出 1;不等于0位置,输出0 
    #array([[0, 0, 0, 0, 0, 0, 0, 0], 
    **# [0, 0, 0, 1, 1, 1, 1, 0],**
    **#[0, 0, 0, 1, 1, 1, 1, 0]])**

    5.对数组进行数学计算和代数运算
    例:

    #[[ 0,  1,  2,  3,  4,  5,  6,  7], 
    #[ 8,  9, 10, 11, 12, 13, 14, 15], 
    #[16, 17, 18, 19, 20, 21, 22, 23]]
    np.sum(b,axis=0)    #列求和 
    #array([24, 27, 30, 33, 36, 39, 42, 45]) 
    np.sum(b,axis=1)    #行求和 
    #array([ 28,    92, 156]) 
    np.sum(b)      #求和 
    #276

    完毕!

    技术交流群:887934385 

  • 相关阅读:
    svn 指定不更新目录
    C# 修改win环境变量 来加载dll库
    基本组件
    在SD卡上创建/删除文件夹 使用DDMS透视图管理SD卡
    linux中图形界面改成文本
    表格布局和线性布局
    文件操作
    静态库的生成和调用
    船载电子海图系统(E C S )概述
    GPS全球定位系统构成及原理
  • 原文地址:https://www.cnblogs.com/pypypy/p/12113295.html
Copyright © 2011-2022 走看看