zoukankan      html  css  js  c++  java
  • numpy模块(对矩阵的处理,ndarray对象)

    6.12自我总结

    一.numpy模块

    import numpy as np约定俗称要把他变成np

    1.模块官方文档地址

    https://docs.scipy.org/doc/numpy/reference/?v=20190307135750

    2.创建矩阵

    1.np.array

    import numpy as np
    #创建一维的ndarray对象
    arr = np.array([1, 2, 3])
    print(arr)
    #[1 2 3]
    
    #创建二维的ndarray对象
    arr = np.array([[1, 2, 3],
                   [4,5,6]])
    print(arr)
    '''
    [[1 2 3]
     [4 5 6]]
    '''
    #创建三维的ndarray对象
    arr = np.array([[[1, 2, 3],[3,2,1]],
                   [[4,5,6],[6,5,4]]])
    print(arr)
    '''
    [[[1 2 3]
      [3 2 1]]
    
     [[4 5 6]
      [6 5 4]]]
    '''
    
    #我们可以这样理解.其实内这个可以相当于几何里面的,点,线,面,里面各个元素相当一个点,一个列表里面有几个元素相当于线也就是一维,然后列表里面套列表相当于线,以此类推
    

    3.对于矩阵的操作(ndarray对象的方法)

    1.shape(查看ndarray对象的形式)

    import numpy as np
    arr = np.array([[1, 2, 3],
                   [4,5,6]])
    print(arr.shape)
    #(2, 3)
    # (矩阵的行数,矩阵的列数)
    

    2.切分工具

    import numpy as np
    arr = np.array([[1, 2, 3],
                   [4,5,6]])
    
    #取第一行全部
    print(arr[0,:])
    
    #取第一列全部
    print(arr[:,0])
    
    #取第二行第二个
    print(arr[1,1],type(arr[1,1])) #5 <class 'numpy.int32'>
    print(arr[1,1:2],type(arr[1,1:2]))#[5] <class 'numpy.ndarray'>
    
    #取第二行第第二个和第三个
    print(arr[1,1:3])
    
    #取大于3的值
    print(arr[arr>3])
    
    #取第第一列大于3的值
    arr_lien = arr[:,0]
    print(arr_lien[arr_lien>3])
    

    3.生成布尔矩阵

    import numpy as np
    arr = np.array([[1, 2, 3],
                   [4,5,6]])
    print(arr>5)
    '''
    [[False False False]
     [False False  True]]
    '''
    

    4.矩阵的替换

    用切片取值然后进行赋值
    

    5.矩阵合并

    1.np.concatenate
    import numpy as np
    arr1 = np.array([[1, 2, 3],
                   [4,5,6]])
    arr1 = np.array([[3, 2, 4],
                   [5,3,7]])
    
    print(np.concatenate((arr1,arr2),axis=0或1) #前面只能写入一个容器,后面用axis控制竖着合并还是横着合并
    

    6.矩阵的生成

    1.arange
    np.arage(起始值,结束值,步长)#顾头不顾尾,用法类似for 循环中的range
    
    2.linspace/logspace
    # 构造一个等差数列,取头也取尾,从0取到20,取5个数
    print(np.linspace(0, 20, 5))
    #[  0.   5.  10.  15.  20.]
    
    # 构造一个等比数列,从10**0取到10**20,取5个数
    print(np.logspace(0, 20, 5))
    [1.e+00 1.e+05 1.e+10 1.e+15 1.e+20]
    
    3.zeros/ones/eye
    # 构造3*4的全0矩阵
    print(np.zeros((3, 4))) #填的值为(行数,列数)
    
    # 构造3*4的全1矩阵
    print(np.ones((3, 4)))  #填的值为(行数,列数)
    
    # 构造3个主元的单位矩阵
    print(np.eye(3))     #填的值为(主元的个数)
    '''
    [[ 1.  0.  0.]
     [ 0.  1.  0.]
     [ 0.  0.  1.]]
    '''
    
    4.fromstring/fromfunction
    # fromstring通过对字符串的字符编码所对应ASCII编码的位置,生成一个ndarray对象
    s = 'abcdef'
    # np.int8表示一个字符的字节数为8
    print(np.fromstring(s, dtype=np.int8)) 
    
    def func(i, j):
        """其中i为矩阵的行,j为矩阵的列"""
        return i*j
    
    
    # 使用函数对矩阵元素的行和列的索引做处理,得到当前元素的值,索引从0开始,并构造一个3*4的矩阵
    print(np.fromfunction(func, (3, 4)))
    
    7.随机生成(np.random)
    # RandomState()方法会让数据值随机一次,之后都是相同的数据
    rs = np.random.RandomState(1)
    print(rs.rand(10))
    
    # 构造3*4的均匀分布的矩阵
    # seed()方法会让数据值随机一次,之后都是相同的数据
    np.random.seed(1)
    print(np.random.rand(3, 4))
    
    # 构造3*4*5的均匀分布的矩阵
    print(np.random.rand(3, 4, 5))
    
    # 构造3*4的正态分布的矩阵
    print(np.random.randn(3, 4))
    
    # 构造取值为1-5内的10个元素的ndarray数组
    print(np.random.randint(1, 5, 10))
    
    # 构造取值为0-1内的3*4的矩阵
    print(np.random.random_sample((3, 4)))
    
    # 随机选取arr中的两个元素
    print(np.random.choice(arr, size=2))
    

    对照表

    函数名称 函数功能 参数说明
    rand(d0,d1,⋯,dn) 产生[0,1)内的均匀分布的随机数 dn为第n维数据的维度
    randn(d0,d1,⋯,dn) 产生标准正态分布随机数 dn为第n维数据的维度
    randint(low[, high, size, dtype]) 产生随机整数 low:最小值;high:最大值;size:数据个数
    random_sample([size]) 在[0,1)内产生随机数 size为随机数的shape,可以为元祖或者列表
    choice(a[, size]) 从arr中随机选择指定数据 arr为1维数组;size为数据形状

    4.矩阵运算(与数据类型差不多)

    运算表

    运算符 说明
    + 两个矩阵对应元素相加
    - 两个矩阵对应元素相减
    * 两个矩阵对应元素相乘
    / 两个矩阵对应元素相除,如果都是整数则取商
    % 两个矩阵对应元素相除后取余数
    **n 单个矩阵每个元素都取n次方,如**2:每个元素都取平方

    4.矩阵的行和列互换(transpose)

    5.矩阵的最大最小值 ,平均值,方差

    1.最大值ndarray对象.max

    2.最小值ndarray对象.min

    3.平均值ndarray对象.mean

    4.方差ndarray对象.var

    ()代表区别

    (axis=0)每列

    (axis=1)每行

    # 获取矩阵所有元素中的最大值
    print(arr.max())
    
    # 获取举着每一列的最大值
    print(arr.max(axis=0))
    
    # 获取矩阵每一行的最大值
    print(arr.max(axis=1))
    
    # 获取矩阵最大元素的索引位置
    print(arr.argmax(axis=1)
          
    # 获取矩阵所有元素的平均值
    print(arr.mean())
    
    # 获取矩阵每一列的平均值
    print(arr.mean(axis=0))
          
    # 获取矩阵每一行的平均值
    print(arr.mean(axis=1))
          
    # 获取矩阵所有元素的方差
    print(arr.var())
    
    # 获取矩阵每一列的元素的方差
    print(arr.var(axis=0))
          
    # 获取矩阵每一行的元素的方差
    print(arr.var(axis=1))      
    
  • 相关阅读:
    3月6日
    2月28日
    2月23日
    2月20日
    2月19日
    2月18日
    2月17日
    2月16日
    2月15日
    面试算法题——硬币找零
  • 原文地址:https://www.cnblogs.com/pythonywy/p/11010790.html
Copyright © 2011-2022 走看看