zoukankan      html  css  js  c++  java
  • Numpy的基本运算及操作

    import numpy as np
    
    '''
    一.算术运算
       元素级
       1.标量 加减乘除 数组(元素级:位置对应) 自增和自减  通用函数
       2.数组 +-*/ 数组    (元素级)
       3.条件和布尔运算  a>0.5  满足的True,不满足False    a[a>0.5]:满足条件的组成新的数组
       
       非元素级
       1.矩阵的积 dot(A,B)  A.dot(B)
       2.聚合函数     【求和:a.sum(),最值:a.max(),平均值:a.mean(),标准差:a.std()】 
    
    二.数组操作
        1.连接数组【同矩阵类似】
        1.1垂直扩展(入栈)  vstack(A,B)
        1.2水平扩展(入栈)  hstack(A,B)
        
        2.数组切分
        2.1垂直切分         vsplit()
        2.2水平切分         hsplit()
        2.3  np.split(H,(1,3),axis=0)  split切分,需要指定轴   
    三.常用概念
        1.副本或视图:数组运算 和 操作  返回的不是副本就是视图   但是赋值运算不会创建副本【a  b = a  b在运用时时在调用a,没有副本,所以a改变了,b的调用值夜改变】可以用copy()创建副本
        2.向量化
        3.广播机制  【数组兼容:两数组的每一维等长或者其中一个数组是一维的】【两原则:1.缺失的维度补上1    2.较小数组扩充维度,使之与大数组维度相同】
        4.结构化数组
        5.数组文件的读写
       
    '''
    A = np.zeros((3,3))  ##3行3列
    B = np.ones((2,3))   ##2行3列
    C = np.transpose(B)  ##转置
    D = np.vstack((A,B))
    E = np.hstack((A,C))
    F = np.transpose((D))
    H = np.vstack((E,F))
    
    ##1.1垂向入栈
    print(D)
    '''
    [[0. 0. 0.]
     [0. 0. 0.]
     [0. 0. 0.]
     [1. 1. 1.]
     [1. 1. 1.]]
    '''
    ##1.2横向入栈
    print(E)
    '''
    [[0. 0. 0. 1. 1.]
     [0. 0. 0. 1. 1.]
     [0. 0. 0. 1. 1.]]
    '''
    
    print(H)
    '''
    [[0. 0. 0. 1. 1.]
     [0. 0. 0. 1. 1.]
     [0. 0. 0. 1. 1.]
     [0. 0. 0. 1. 1.]
     [0. 0. 0. 1. 1.]
     [0. 0. 0. 1. 1.]]
    '''
    ##2.1垂直切分  np.vsplit(H,2)均分为两部分
    [A1,A2,A3] = np.vsplit(H,(1,3))   ##  按行索引1,3,分开,分成3部分
    print(A1)
    print(A2)
    print(A3)
    
    ##2.2水平切分
    [B1,B2,B3] = np.hsplit(H,(1,3))   ##  按列索引1,3,分开,分成3部分
    print(B1)
    print(B2)
    print(B3)
    
    ##2.3  np.split(H,(1,3),axis=0)  split切分,需要指定轴
    
    
    
    ###  广播机制
    a = np.arange(16).reshape((4,4))
    b = np.arange(4)
    print(a.shape)
    print(b.shape)
    '''
    [[ 0  1  2  3]
     [ 4  5  6  7]
     [ 8  9 10 11]
     [12 13 14 15]]
    [0 1 2 3]
    
    (4, 4)
    (4,)  为缺失的维度补上1  (4,1)
    '''
    
    c = a+b
    print(c)
    '''
    [[ 0  2  4  6]
     [ 4  6  8 10]
     [ 8 10 12 14]
     [12 14 16 18]]
     
     一维数组+二维数组,其中一个数组是一维,满足兼容条件。可以应用广播机制。
     第二个原则:缺失元素都用已有元素填充
     [0,1,2,3]
     填充后
     [[0,1,2,3]
     [0,1,2,3]
     [0,1,2,3]
     [0,1,2,3]]
     
    '''
    
    ###两个数组形状和维度不同
    m = np.arange(6).reshape(3,1,2)
    n = np.arange(6).reshape(3,2,1)
    print(m)
    print(n)
    print(m+n)
    '''
    [[[0 1]]           
    
     [[2 3]]
    
     [[4 5]]]
    [[[0]
      [1]]
    
     [[2]
      [3]]
    
     [[4]
      [5]]]
      
    m数组:第二维1 扩充到2   已有元素填充
    [[[0 1],[[0 1]]           
    
     [[2 3],[2 3]]
    
     [[4 5],[4 5]]]
     
    n数组 :第3维 1 扩充到2   已有元素填充
    [[[0,1],[1,1]]
    
     [[2,2],[3,3]]
    
     [[4,4],[5,5]]]
    
    
    m+n:
    [[[ 0  1],[ 1  2]]
    
     [[ 4  5],[ 5  6]]
    
     [[ 8  9],[ 9 10]]]
    '''
  • 相关阅读:
    mysql 数据库之存储过程语法
    数据库之多表查询
    mysql 查询之数据语句分类
    mysql 之分组查询
    mysql之查询排序
    mysql 之分页查询
    简述Hibernate常见优化策略
    如何理解Hibernate的延迟加载机制?
    hibernate中Session的load和get方法的区别是什么?
    HttpServlet容器响应Web客户请求流程?
  • 原文地址:https://www.cnblogs.com/liuhuacai/p/11582026.html
Copyright © 2011-2022 走看看