• numpy学习笔记


    numpy学习笔记


    目录

    numpy学习笔记

    numpy的安装

    numpy 的属性:

    Numpy 创建 array

    Numpy 基础运算

    Numpy 索引

    Numpy array 合并

    Numpy array 分割

    Numpy copy & deep copy


    numpy的安装

    pip install numpy

    numpy 的属性:

    • ndim:维度

    • shape:行数和列数

    • size:元素个数

    import numpy as np #为了方便使用numpy 采用np简写
    array = np.array([[1,2,3],[2,3,4]])  #列表转化为矩阵
    ​
    print('number of dim:',array.ndim)  # 维度
    # number of dim: 2
    print('shape :',array.shape)    # 行数和列数
    # shape : (2, 3)
    print('size:',array.size)   # 元素个数
    # size: 6

    Numpy 创建 array

    • array:创建数组

    • dtype:指定数据类型

    • zeros:创建数据全为0

    • ones:创建数据全为1

    • empty:创建数据接近0

    • arrange:按指定范围创建数据

    • linspace:创建线段

    a = np.array([2,23,4])  # list 1d
    #指定数据 dtype
    a = np.array([2,23,4],dtype=np.int)
    a = np.array([2,23,4],dtype=np.int32)
    a = np.array([2,23,4],dtype=np.float)
    a = np.array([2,23,4],dtype=np.float32)
    #创建特定数据 
    a = np.array([[2,23,4],[2,32,4]])  # 2d 矩阵 2行3列
    #创建全零数组
    a = np.zeros((3,4)) # 数据全为0,3行4列
    #创建全一数组, 同时指定这些特定数据的 dtype:
    a = np.ones((3,4),dtype = np.int)   # 数据为1,3行4列
    #创建全空数组:
    a = np.empty((3,4)) # 数据为empty,3行4列
    #用 arange 创建连续数组:
    a = np.arange(10,20,2) # 10-19 的数据,2步长
    #使用 reshape 改变数据的形状
    a = np.arange(12).reshape((3,4))    # 3行4列,0到11
    #用 linspace 创建线段型数据:
    a = np.linspace(1,10,20)    # 开始端1,结束端10,且分割成20个数据,生成线段
    #同样也能进行 reshape 工作:
    a = np.linspace(1,10,20).reshape((5,4)) # 更改shape
    ​

    Numpy 基础运算

    import numpy as np
    ​
    ########################一维矩阵#######################
    a=np.array([10,20,30,40])   # array([10, 20, 30, 40])
    b=np.arange(4)              # array([0, 1, 2, 3])
    ​
    c=a-b  # array([10, 19, 28, 37])
    c=a+b   # array([10, 21, 32, 43])
    c=a*b   # array([  0,  20,  60, 120])
    ​
    #在Numpy中,想要求出矩阵中各个元素的乘方需要依赖双星符号 **,即:
    c=b**2  # array([0, 1, 4, 9])
    ​
    #当需要对矩阵中每一项元素进行函数运算时:
    c=10*np.sin(a)  # array([-5.44021111,  9.12945251, -9.88031624,  7.4511316 ])
    ​
    #对print函数进行一些修改可以进行逻辑判断:
    print(b<3)  # array([ True,  True,  True, False], dtype=bool)
    ​
    ########################多维矩阵#######################
    a=np.array([[1,1],[0,1]])
    b=np.arange(4).reshape((2,2))
    ​
    #对应元素相乘
    c=a*b
    #标准矩阵相乘
    c_dot = np.dot(a,b)
    c_dot_2 = a.dot(b)
    ​
    #对矩阵中所有元素进行求和,寻找最小值,寻找最大值的操作:
    np.sum(a)   
    np.min(a)  
    np.max(a)   
    #需要对行或者列进行查找运算,要在上述代码中为 axis 进行赋值。 当axis的值为0的时候,将会以列作为查找单元, 当axis的值为1的时候,将会以行作为查找单元。
    print("sum =",np.sum(a,axis=1))
    print("min =",np.min(a,axis=0))
    print("max =",np.max(a,axis=1))
    import numpy as np
    A = np.arange(2,14).reshape((3,4)) 
        
    # argmin() 和 argmax() 两个函数分别对应着求矩阵中最小元素和最大元素的索引。
    print(np.argmin(A))    # 0
    print(np.argmax(A))    # 11
    ​
    #计算统计中的均值
    print(np.mean(A))        # 7.5 mean()函数还有另外一种写法: print(A.mean())
    print(np.average(A))     # 7.5
    ​
    #求解中位数的函数:
    print(A.median())       # 7.5
    ​
    #累加函数
    print(np.cumsum(A)) 
    ​
    #累差函数
    print(np.diff(A))   
    ​
    #对所有元素进行仿照列表一样的排序操作
    print(np.sort(A))    
    ​
    #矩阵的转置两种表示方法:
    print(np.transpose(A))    
    print(A.T)
    ​

    Numpy 索引

    一维索引

    import numpy as np
    ​
    A = np.arange(3,15) # array([3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14])
    print(A[3])    # 6
    ​
    A = np.arange(3,15).reshape((3,4))
    """
    array([[ 3,  4,  5,  6]
           [ 7,  8,  9, 10]
           [11, 12, 13, 14]])
    """       
    print(A[2])         
    # [11 12 13 14]

    二维索引

    print(A[1][1])      # 8
    print(A[1, 1])      # 8
    ​
    print(A[1, 1:3])    # [8 9]
    ​
    for row in A:
        print(row)
    """    
    [ 3,  4,  5, 6]
    [ 7,  8,  9, 10]
    [11, 12, 13, 14]
    """
    ​
    for column in A.T:
        print(column)
    """  
    [ 3,  7,  11]
    [ 4,  8,  12]
    [ 5,  9,  13]
    [ 6, 10,  14]
    """
    ​
    #flatten是一个展开性质的函数,将多维的矩阵进行展开成1行的数列
    print(A.flatten())   # array([3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14])

    Numpy array 合并

    import numpy as np
    A = np.array([1,1,1])
    B = np.array([2,2,2])
    ​
    #上下合并:
    print(np.vstack((A,B)))    # vertical stack
    """
    [[1,1,1]
     [2,2,2]]
    """
    ​
    #左右合并
    D = np.hstack((A,B))       # horizontal stack
    # [1,1,1,2,2,2]

    Numpy array 分割

    import numpy as np
    ​
    A = np.arange(12).reshape((3, 4))
    """
    array([[ 0,  1,  2,  3],
        [ 4,  5,  6,  7],
        [ 8,  9, 10, 11]])
    """
    ##############################对等分割################################
    ​
    #纵向分割 
    print(np.split(A, 2, axis=1))
    """
    [array([[0, 1],
            [4, 5],
            [8, 9]]), 
     array([[ 2,  3],
            [ 6,  7],
            [10, 11]])]
    """
    #横向分割 
    print(np.split(A, 3, axis=0))
    """
    [array([[0, 1, 2, 3]]), array([[4, 5, 6, 7]]), array([[ 8,  9, 10, 11]])]
    """
    ​
    ##############################不等量分割################################
    print(np.array_split(A, 3, axis=1))
    """
    [array([[0, 1],
            [4, 5],
            [8, 9]]), 
     array([[ 2],
            [ 6],
            [10]]),
     array([[ 3],
            [ 7],
            [11]])]
    """

    Numpy copy & deep copy

    import numpy as np
    ​
    a = np.arange(4)
    # array([0, 1, 2, 3])
    ​
    ############################### = 的赋值方式会带有关联性 ##############################
    b = a
    c = a
    d = b
    #改变a的第一个值,b、c、d的第一个值也会同时改变。
    a[0] = 11
    print(a)
    # array([11,  1,  2,  3])
    ​
    #确认b、c、d是否与a相同。
    b is a  # True
    c is a  # True
    d is a  # True
    #同样更改d的值,a、b、c也会改变。
    d[1:3] = [22, 33]   # array([11, 22, 33,  3])
    print(a)            # array([11, 22, 33,  3])
    print(b)            # array([11, 22, 33,  3])
    print(c)            # array([11, 22, 33,  3])
    ​
    ############################### copy() 的赋值方式没有关联性 ###############################
    b = a.copy()    # deep copy
    print(b)        # array([11, 22, 33,  3])
    a[3] = 44
    print(a)        # array([11, 22, 33, 44])
    print(b)        # array([11, 22, 33,  3])

     

  • 相关阅读:
    ORA-01536: 超出表空间 'tablespace_name' 的空间限额
    Oracle数据库表索引失效,解决办法:修改Oracle数据库优化器模式
    解决response.setHeader("Content-disposition" 中文乱码问题
    MyBatis配置:在控制台打印SQL语句
    JS 字符串转日期格式 日期格式化字符串
    远程桌面管理工具Remote Desktop Connection Manager
    调整Windows操作系统下时间同步的频率
    Oracle数据库中字符型字段按数字排序
    “Error:(1, 1) java: 非法字符: 'ufeff'”错误解决办法
    本次孩子流感总结
  • 原文地址:https://www.cnblogs.com/Archger/p/12774670.html
Copyright © 2020-2023  润新知