numpy的引入及数组、轴 *** 作

numpy的引入及数组、轴 *** 作,第1张

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

一个在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()
        • 将数组展开成一维数组;
  • 数组的计算:
    • np.sum(s);运算结果为所有元素的和;
    • 数组与数字做运算:
      • 对数组进行加减乘除相当于对数组的每个数字进行相应计算;
      • 注意:在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轴;
  • 在引入轴的概念之后,可以指定计算方向;
  • 在轴的基础上进行运算:
    • np.sum(s, axis=0)或者s.sum(axis=0);对行进行相加 *** 作;
    • np.sum(s, axis=1);对列进行相加 *** 作;
    • s.mean(axis=0):均值;
    • np.median(s, axis=0);中值;
    • 最大/最小值:s.max(axis= )、s.min(axis= )
    • 极值:np.ptp(s, axis= )最大值最小值之差;
    • 标准差:s.std(axis= );数据与平均值分散程度的度量,标准差越大,波动越大,数据越分散;

欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/langs/791195.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2022-05-05
下一篇2022-05-05

发表评论

登录后才能评论

评论列表(0条)

    保存