numpy基础知识

numpy

概念

科学计算基础库,多作为数值计算、在大型、多维数组上执行数值运算。

  1. 创建数组

    import numpy as np
    a = np.array([1,2,3,4,5])
    b = np.array(range(1,6))
    c = np.arange(1,6)
    # 其中 a = b = c
    np.arange的用法:arange([start], stop[, step,], dtype=None)
    
    • c.dtype获取c中数据的类型
    • c.astype(‘int8’)修改数据类型
    • np.round(c, 2), 将元素为小数类型的数组,保留2位小数
  2. 数组的形状

     t = np.array([[1,2,3], [4,5,6]])
     t.shape # 获取t的形状,即维数
    
    • reshape((2,3)) 修改形状,修改后是新值,而原数组不变

    • flatten() 展开数组

    • shape的值:

      一个值(a, ) ----- 一维 ----- a表示数组中元素的个数

      两个值(a, b ) ----- 二维 ---- a表示数组中元素的行数,b表示数组中元素的列数

      三个值(a, b,c ) ----- 三维 ---- a表示数组中元素的块,b表示数组中每一块元素的行数,c表示数组中每一块元素的列数

  3. 计算

    • 数组 和 常数:数组中每一个元素和常数进行运算。

      其中:(0/0=nan ; 非零常数/0 = inf)

    • 数组(a) 和 数组(b)

      • 二维:

        (1)维数相同: 两个数组对应位置上的元素进行运算

        (2)行数相同(a(3,1),b(3,5)): b的每一列和a进行运算

        (3)列数相同(a(1,2),b(4,2)): b的每一行和a进行运算

        (4)行数和列数不等:报错

      • 多维(广播原则)

        如果两个数组的后缘维度(从末尾开始算起的维度)的轴长度相符或其中方的长度为1,则他们是广播兼容的。广播会在缺失和(或)长度为1的维度上进行。

        eg: (3,3,3)和(3,2) --> 不兼容

        ​ (3,3,2)和(3,2) --> 兼容

    • 一维:0轴

    • 二维:横为0轴,纵为1轴

    • 三维:块为0轴,每一块的横为1轴,每一块的纵为2轴

    在这里插入图片描述

  4. 读取本地数据

    np.loadtxt(frame,dtype=np.float,delimiter=None,skiprows=0,usecols=None,unpack=False)

    frame: 文件路径

    dtype:读取为指定的数据类型

    delimiter:分割字符串

    skiprows:跳过的行(如:标题行)

    usecols:读取的数据的列

    unpack:若为true,矩阵转置

    numpy 转置:

    (1)transpose() 方法

    (2)T属性

    (3)swapaxes(1,0)方法,0和1分别为轴

索引和切片

  1. 取行

    • 单行: t[行数]
    • 连续多行:t[行数:],从指定行数开始连续取数组的行
    • 不连续:t[[1,5,8]], 取第1、5、8行
  2. 取列

    • 单列:t[行,列],取指定的行和列,其中:表示都要,如t[1,:]表示第二行的所有列

      例:

      import numpy as np
      t = np.arange(6).reshape((3,2))
      print(t[1,:])  # 取第二行的所有列,结果:[2 3]
      print(t[2:,:])  # 取第三行之后所有行对应的所有列,结果:[[4 5]]
      print(t[[0,2],:])  # 取第一行和第三行的所有列,结果:[[0 1] [4 5]]
      print(t[1:3,0:2])  # 取第二行到第三行对应的第1列到第2列,结果:[[2 3] [4 5]]
      # 注:其中1:3中3为切片,即含头不含尾,真实值为1到2,所以3对应的是索引为2,而索引为2对应的值为第三行的值。
      
  3. 取不相邻的点

    t[[0,2],[0,1]], 取下标为(0,0)和(2,1)对应的值

修改

  • 条件修改

    t[t<10]=3 将t中小于10的值

  • where方法

    np.where(条件,符合条件的元素要赋的值,不符合条件的元素要赋的值)

    ge: np.where(t>10, 0, 20) 将t中小于10 的元素替换为10,大于等于10的赋值为20

  • clip方法

    t.clip(value1,value2) 把小于value1的元素替换为value1, 大于value2的元素替换为value

常用函数

  • 求和

    1. 整个数组的和:np.sum(数组)
    2. 各个列对应的和:np.sum(数组,axis=0)
    3. 各个行对应的和:np.sum(数组,axis=1)
  • 均值 t.mean(a,axis=None)

  • 中值 np.median(t,axis=None)

  • 最大值 t.max(axis=None)

  • 最小值 t.min(axis=None)

  • 极值 np.ptp(t,axis=None)

  • 标准差 t.std(axis=None)

  1. 计算函数
  • 求和

    1. 整个数组的和:np.sum(数组)
    2. 各个列对应的和:np.sum(数组,axis=0)
    3. 各个行对应的和:np.sum(数组,axis=1)
  • 均值 t.mean(a,axis=None)

  • 中值 np.median(t,axis=None)

  • 最大值 t.max(axis=None)

  • 最小值 t.min(axis=None)

  • 极值 np.ptp(t,axis=None)

  • 标准差 t.std(axis=None)

  1. 操作函数

    • 拼接

      • np.vstack((t1, t2)) 竖直拼接
      • np.hstack((t1, t2)) 水平拼接
    • 分割:竖直分割(水平划线)

      ​ 水平分割(竖直划线)

  2. 交换

    t[[1,2], :] = t[[2,1], :] 行交换

    t[:, [1,2]] = t[:, [2,1]] 列交换

  3. 常用函数

    创建全为0的数组:np.zeros((2,2))

    创建全为1的数组:np.ones((2,2))

    创建三角方阵:np.eye(2)

    获取每列最大值的坐标:np.argmax(数组,axis=0)

    获取每行最小值的坐标:np.argmin(数组,axis=1)

    创建随机分布数组 np.random.random(2,3) 创建两行三列的随机分布

    创建标准正态分布数组 np.random.randn(2,3) 创建两行三列的标准正态分布

    创建指定区间的随机整数数组 np.random.randint(start,end,(row, col))

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值