栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Python

numpy的引入及数组操作

Python 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

numpy的引入及数组操作

优势
  • 快速;
  • 方便;
  • 科学计算的基础库;
介绍

一个在Python中做科学计算的基础库,重在数值计算,也是大部分Python科学计算库的基础库,多用在大型、多维数组上执行数值运算。

使用 数组
  • 创建数组:
    import numpy as np
    a_1 = np.array([1, 2, 3, 4, 5])
    a_2 = np.array(range(1, 6))
    a_3 = np.arange(1, 6)
    
    • 以上三个数组的内容相同;
    • arange()与range()区别:
      • arange([start, ]stop[, step][, dtype=None])
        • dtype是指数组中存放的数据的类型。会在Python基础类型后加一个显示位数的数字,比如int64(表示有符号和无符号位的64位(8字节)整型数据);
        • 默认根据电脑位数存储;
        • 传入参数可更改数据类型(比如np.int8);
        • 使用astype()方法可通过传参改变数组类型,会形成新数组,不影响原数组数据;
    np.random.random()
    
    • 生成0~1的随机小数;
    np.round(array, n)
    
    • 对传入的数列进行取N位小数操作;
  • 数组的形状:
    • 查看形状:
      • array.shape()
    • 重塑形状:
      • array.reshape(x,y,z[,…])
        • n个参数则产生n维数组;
        • 举例:
          array_1 = np.arange(24)
          array_2 = array_1.reshape(2, 3, 4)
          
          输出结果为:
          [ 0  1  2  3  4  5  6  7  8  9 10 11 12 13 14 15 16 17 18 19 20 21 22 23] 
           [[[ 0  1  2  3]
            [ 4  5  6  7]
            [ 8  9 10 11]]
          
           [[12 13 14 15]
            [16 17 18 19]
            [20 21 22 23]]]
          
          • 注意:数组元素数目必须与参数乘积相等,否则报错;
      • array.flatten()
        • 将数组展开成一维数组;
  • 数组的计算:
    • 数组与数字做运算:
      • 对数组进行加减乘除相当于对数组的每个数字进行相应计算;
      • 注意:在numpy中对0做除法,0/0 = nan;n/0 = inf;
    • 数组与数组同形时做运算,对应位置做运算;
    • 数组与数组列数相同时,每行做一次运算;
    • 数组与数组行数相同时,每列做一次运算;
    • 注意:如果两个数组的后缘维度(从末尾开始算起的维度)的轴长度相符或者其中一方的长度为一,则默认他们是广播兼容的。广播会在缺失或(和)长度为一的维度上进行;
  • 转置:
    • s.tranpose();
    • s.T;
    • s.swapaxes(0, 1):交换0轴和1轴;
  • 切片操作:
    • 取行:
      • s[n];取第n行
      • s[n:];从第n行开始取;
      • s[[2, 8, 10]]:取不连续多行;
    • 取列:
      • s[:,n]:取第n列;
      • s[:, n:];从第n列开始取;
      • s[:, [2, 8, 10]]:取不连续多列;
    • 取点:
      • s[2, 3]:取第三行第四列交点的值;
    • 取多行多列:
      • s[2:5, 1:4]:取第三到五行,二到三列的内容;
    • 取多个不相邻的点:
      • s[0, 1], [0, 1]:取第一行第一列的值,取第二行第二列的值;
  • 对值的修改:
    • s[s<10] = 3;将s中小于10的值修改为3;
    • s[s<10];返回值为其中小于10的值的序列;
    • np.where(s<10, 0, 0);将s中小于10的数字换为0,大于10的数字换为10;(三元运算符)
  • 裁剪(clip);
    • s.clip(10, 18):将s中小于10的值替换为10,大于有8的值替换为18,nan不改变;

**注意:**nan为浮点类型;

  • 可以理解为方向,使用数字0~n表示,对于一个一维数组,只有一个0轴,对于2维数组(shape(2, 2)),只有0轴和1轴,对于三维数组(shape(2, 2, 3)),有0、1、2轴;
  • 在引入轴的概念之后,可以指定计算方向;
转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/844218.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号