NumPy中数据存取与随机函数、统计函数、梯度函数

参考教程: Python数据分析与展示_北京理工大学

CSV文件的存取(适用于一维二维数据)

  • CSV(Comma-Separated Value)又叫逗号分隔值文件,是一种常见的文件格式,用来存储批量数据。
    如:
    在这里插入图片描述
    CSV文件是存储一维和二维数据非常常见的格式
  • NumPy中的操作
    • 写入CSV文件
      np.savetxt(frame, array, fmt='%.18e', delimiter=None)
      参数:
      • frame:文件、字符串或产生器,可以是.gz或.bz2的压缩文件
      • array:存入文件的数组
      • fmt:写入文件的格式,例如:%d、%.2f、%.18e等
      • delimiter:分割字符串,默认是None,即任何空格
        如:
      import numpy as np  # 导入numpy类
      
      a = np.arange(100).reshape(5, 20)  # 5行20列的数据
      np.savetxt('a.csv', a, fmt='%d', delimiter=',')  # 生成CSV文件
      
    • 读取CSV文件
      np.loadtxt(frame, dtype=np.float, delimiter=None, unpack=False)
      参数:
      • frame:文件、字符串或产生器,可以是.gz或.bz2的压缩文件
      • dtype:数据类型,可选,默认是float
      • delimiter:分割字符串,默认是任何空格
      • unpack:如果为True,读入属性将分别写入不同的数组变量
        如:
      import numpy as np  # 导入numpy类
      
      b = np.loadtxt('a.csv', dtype=np.int, delimiter=',')  # 读取a.csv中的数据
      print(b)  # 输出数组b
      
    • CSV文件的局限性
      CSV文件可以很好的存储数据,但也有一定的局限性
      • CSV只能有效存储一维和二维数组
      • np.savetxt( np.loadtxt()·只能有效存储和读取一维和二维数组

多维数据的存取

  • NumPy中提供的方法
    • 写入文件
      a.tofile(frame, sep='', format='%s')
      参数:
      • frame:文件、字符串
      • sep:数据分割字符串,如果是空串,写入文件为二进制(二进制文件比文本文件占用更少的空间)
      • format:写入数据的格式
        如:
      import numpy as np  # 导入numpy类
      
      c = np.arange(100).reshape(5, 10, 2)  # 三维10行2列
      c.tofile('c.bat', sep=',', format='%d')  # 写入文件
      
    • 读取文件
      np.fromfile(frame, dtype=float, count=-1, sep='')
      参数:
      • frame:文件、字符串
      • dtype:读取的数据类型
      • count:读入元素个数,-1表示读入整个文件
      • sep:数据分割字符串,如果是空串,写入文件为二进制
        如:
      import numpy as np  # 导入numpy类
      
      d = np.fromfile('c.bat', dtype=np.int, sep=',')  # 读取c.bat中的数据
      print(d)  # 结果会发现数据维度丢失
      
      f = np.fromfile('c.bat', dtype=np.int, sep=',').reshape(5, 10, 2)  # 读取c.bat中的数据
      print(f)  # 重新定义维度后还原原数据
      
      注意点:
      • 该方法需要在读取时知道存入文件时数组的维度和元素类型,a.tofile()和np.fromfile()需要配合使用。可以通过元数据文件来存储额外信息
    • NumPy的便捷文件存取
      • 写入文件
        np.save(fname, array)np.savez(fname, array)
        参数:

        • frame:文件名,以.npy为扩展名,压缩扩展名为.npz
        • array:数组变量

        这种方法写入数据的文件格式不能修改
        如:

        import numpy as np  # 导入numpy类
        
        f = np.arange(100).reshape(5, 10, 2)  # 三维10行2列
        np.save('f.npy', f)  # 写入文件
        
      • 读取文件
        np.load(fname)
        参数:

        • frame:文件名,以.npy为扩展名,压缩扩展名为.npz
          如:
        import numpy as np  # 导入numpy类
        
        g = np.load('f.npy')  # 读取f.npy中的数据
        print(g)
        

NumPy的随机数函数

  • Python的标准库random是为一般的标量服务提供随机数服务的

  • NumPy的随机数函数子库random子库能为数组类型提供随机数的相关功能

  • np.random的随机数函数
    在这里插入图片描述
    如:

    • rand
      import numpy as np  # 导入NumPy库
      
      a = np.random.rand(3, 4, 5)  # 随机产生三维4行5列数组
      print(a)  # 输出a
      
      结果:
      [[[0.13145815 0.41366737 0.77872881 0.58390137 0.18263144]
        [0.82608225 0.10540183 0.28357668 0.06556327 0.05644419]
        [0.76545582 0.01178803 0.61194334 0.33188226 0.55964837]
        [0.33549965 0.41118255 0.0768555  0.85304299 0.43998746]]
      
       [[0.12195415 0.73173462 0.13878247 0.76688005 0.83198977]
        [0.30977806 0.59758229 0.87239246 0.98302087 0.46740328]
        [0.87574449 0.2960687  0.13129105 0.84281793 0.6590363 ]
        [0.5954396  0.4363537  0.35625033 0.58713093 0.14947134]]
      
       [[0.1712386  0.39716452 0.63795156 0.37251995 0.00240676]
        [0.54881636 0.12697184 0.07979268 0.2350386  0.65996495]
        [0.21495319 0.20304662 0.38286511 0.2248728  0.1146488 ]
        [0.58301705 0.23264106 0.55651819 0.52381088 0.35095822]]]
      
    • randn
      import numpy as np  # 导入NumPy库
      
      sn = np.random.randn(3, 4, 5)  # # 随机产生三维4行5列的呈正态分布的数组
      print(sn)  # 输出sn
      
      结果:
      [[[ 0.87896938  0.56276301  0.28843534 -1.0064815   0.05397842]
        [-1.82672326 -0.09191484 -0.25318316  1.38059377 -0.68342883]
        [-0.31685115 -1.0172704  -0.97412377 -0.033239    0.98288302]
        [-0.46852895 -0.89533944 -0.07599641 -0.41520682  0.90493907]]
      
       [[-0.90289457  0.24743239  1.75223653  0.34854848 -0.02290254]
        [-0.96170169  0.0792365  -0.39327207 -0.60099441 -0.59484183]
        [-1.65773667 -0.00507017  0.79305654 -0.88911776 -0.9978168 ]
        [ 0.66989397  0.64851164  0.02573462  0.58660498  0.28408516]]
      
       [[-1.33168955  1.27310627  0.40924504 -0.60747309  0.93400955]
        [-1.84373609  0.47805208  0.48526092 -0.47499732 -1.16586593]
        [-0.75562989  0.5881038  -1.43924512 -0.46122134  1.21267456]
        [ 0.70466113 -0.45961232  0.53482087  1.46925737 -1.10320787]]]
      
    • randint
      import numpy as np  # 导入NumPy库
      
      b = np.random.randint(100, 200, (3, 4))  # 随机产生3行4列整数数组
      print(b)  # 输出b
      
      结果:
      [[113 103 131 176]
       [187 117 129 169]
       [150 151 120 105]]
      
    • seed
      np.random.seed(10)  # 设定种子数
      c = np.random.randint(100, 200, (3, 4))  # 产生特定的随机数组
      np.random.seed(10)  # 设定种子数
      d = np.random.randint(100, 200, (3, 4))  # 产生特定的随机数组
      print(c)
      print(d)
      
      结果:
      [[109 115 164 128]
       [189 193 129 108]
       [173 100 140 136]]
      [[109 115 164 128]
       [189 193 129 108]
       [173 100 140 136]]
      
      随机数种子对后面的结果一直有影响。同时,加了随机数种子以后,后面的随机数组都是按一定的顺序生成的。可参考:np.random.seed() 的使用详解

    在这里插入图片描述
    如:

    • shuffle和permutation在这里插入图片描述
    • choice
      在这里插入图片描述

在这里插入图片描述
如:
在这里插入图片描述

NumPy的统计函数

能对数组中的信息进行统计运算的函数,使用是可以直接点函数名来使用。如:numpy.std()numpy.var()numpy.average()
NumPy提供的常用统计函数
在这里插入图片描述
axis=None是统计函数的标配参数
如:
在这里插入图片描述
在这里插入图片描述
如:
在这里插入图片描述

NumPy的梯度函数

NumPy的梯度函数只有一个:
在这里插入图片描述
梯度:连续值之间的变化率,即斜率。如:XY坐标轴连续三个X坐标对应的Y轴值:a,b,c,其中,b的梯度是:(c-a)/2
实例:

  • 一维元素:
    在这里插入图片描述
    存在俩侧值 斜率 =(右侧值-左侧值)/ 2
    只存在一侧值 斜率 =(本身-左侧值) 或者 (右侧值-本身)
  • 二维元素:
    在这里插入图片描述
    对于二维数组,任意一个元素的梯度存在两个方向,所以求得的梯度为两个数组对象,第一个数组表示最外层维度的梯度值,即axis=0方向的梯度(列方向);第二个数组表示第二层维度的梯度值,即axis=1方向的梯度(行方向)。

梯度的作用
梯度反应了元素的变化率,如在进行图像声音等批量数据处理的时候,梯度有助于我们发现图像或声音的边缘,在那些不是很平缓的地方通过梯度可以很容易发现

总结

  • 数据的存取
    在这里插入图片描述

  • 随机函数
    在这里插入图片描述

  • 统计函数
    在这里插入图片描述

  • 梯度函数
    在这里插入图片描述

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值