zoukankan      html  css  js  c++  java
  • nump模块

    numpy模块

    numpy是Python的一种开源的数值计算扩展库。这种库可用来存储和处理大型矩阵,比Python自身的嵌套列表结构要高效的多(该结构也可以用来表示矩阵)。

    numpy库有两个作用:

    1. 区别于list列表,提供了数组操作、数组运算、以及统计分布和简单的数学模型
    2. 计算速度快,甚至要由于python内置的简单运算,使得其成为pandas、sklearn等模块的依赖包。高级的框架如TensorFlow、PyTorch等,其数组操作也和numpy非常相似。

    约定俗成:import numpy as np

    1.创建矩阵:

    创建一维的ndarray对象:arr = np.array([1, 2, 3])

    创建二维的ndarray对象arr=np.array([[1, 2, 3], [4, 5, 6]])

    2.获取矩阵的行列

    获取矩阵的行和列构成的数组arr.shape

    3.切割矩阵

    切分矩阵类似于列表的切割,但是与列表的切割不同的是,矩阵的切割涉及到行和列的切割,但是两者切割的方式都是从索引0开始,并且取头不取尾。

    比如一个数组arr,若取第一行第一列,就是arr[1,1]

    取大于5的元素,返回一个数组
    print(arr[arr > 5])

    矩阵按运算符取元素的原理,即通过arr > 5生成一个布尔矩阵
    print(arr > 5)

    4.矩阵元素的替换

    矩阵元素的替换,类似于列表元素的替换,并且矩阵也是一个可变类型的数据,即如果对矩阵进行替换操作,会修改原矩阵的元素,所以下面我们用.copy()方法举例矩阵元素的替换。

    5.矩阵的合并

    1. 合并两个矩阵的行,注意使用hstack()方法合并矩阵,矩阵应该有相同的行,其中hstack的h表示horizontal水平的
      print(np.hstack((arr1, arr2)))

    2. 合并两个矩阵的列,注意使用vstack()方法合并矩阵,矩阵应该有相同的列,其中vstack的v表示vertical垂直的
      print(np.vstack((arr1, arr2)))

    3. 合并两个矩阵,其中axis=1表示合并两个矩阵的行
      print(np.concatenate((arr1, arr2), axis=1))

      axis=0表示合并两个矩阵的列
      print(np.concatenate((arr1, arr2), axis=0))

    6.通过函数创建矩阵

    1. 构造0-9的ndarray数组print(np.arange(10))
    2. 构造一个等差数列,取头也取尾,从0取到20,取5个数
      print(np.linspace(0, 20, 5))
    3. 构造一个等比数列,从100取到1020,取5个数
      print(np.logspace(0, 20, 5))
    4. 构造3*4的全0矩阵print(np.zeros((3, 4)))
    5. 构造3*4的全1矩阵print(np.ones((3, 4)))
    6. 构造3个主元的单位矩阵print(np.eye(3))
    7. 构造一个4*4的随机矩阵,里面的元素是随机生成的
      print(np.empty((4, 4))

    7.矩阵的运算

    也包含+,-,*,/,%,**n

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

    8.矩阵的转置

    矩阵的转置,相当于矩阵的行和列互换。arr.transpose()

    arr.T

    9.矩阵的逆

    矩阵行和列相同时,矩阵才可逆。

    np.linalg.inv(arr)

    10.生成随机数

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

    RandomState()方法会让数据值随机一次,之后都是相同的数据

    rs = np.random.RandomState(1)
    print(rs.rand(10))
    
  • 相关阅读:
    .NET平台下不借助Office实现Word、Powerpoint等文件的解析
    C#智能视频监控软件
    关于“线程”与“阻塞”
    asp.net 页面静态化
    纸上谈兵: 数学归纳法, 递归, 栈
    OSGI:C#如何实现简单的OSGI
    windows service (服务)创建流程
    轻松Scrum之旅——Sprint1:新手上路
    发布本人所有博客文章中涉及的代码与工具(大部分是C++和Java)
    多个常见代码设计缺陷
  • 原文地址:https://www.cnblogs.com/yellowcloud/p/11178125.html
Copyright © 2011-2022 走看看