Numpy

  • NumPy(Numerical Python) 是 Python 语言的一个扩展程序库,支持大量的维度数组与矩阵运算,此外也针对数组运算提供大量的数学函数库。

1 创建 ndarray

  1. 使用np.array()创建

    import numpy as np
    # 一维数据创建
    ret = np.array([1, 2, 3])
    # 二维数据创建
    ret = np.array([[1, 2, 3], [4, 5, 6]])
    print(ret)
    • numpy默认ndarray的所有元素的类型是相同的

    • 如果传进来的列表中包含不同的类型,则统一为同一类型,优先级:str>float>int

    • 使用matplotlib.pyplot获取一个numpy数组,数据来源于一张图片

      import matplotlib.pylab as plt
      # 图片数据转化为数组
      img_arr = plt.imread('./cat.jpg')
      # 数组转图片
      img_show = plt.imshow(img_arr)
      # 操作该numpy数据,该操作会同步到图片中
      plt.imshow(img_arr-100)
  2. 使用np的routines函数创建

    • np.linspace(start, stop, num=50, endpoint=True, retstep=False, dtype=None) 等差数列

      np.linspace(0,100,num=20)
    • np.arange([start, ]stop, [step, ]dtype=None)

      np.arange(0,100,2)
    • np.random.randint(low, high=None, size=None, dtype='l') 随机生成

      np.random.seed(100) #固定随机性#随机因子:系统的时间
      arr = np.random.randint(0,100,size=(4,5)) #size 4行5列
    • np.random.random(size=None)

      生成0到1的随机数,左闭右开 np.random.seed(3)

      np.random.random(size=(4,5))  # 4行5列

2 ndarray的属性

  • 4个必记参数: ndim:维度 shape:形状(各维度的长度) size:总长度

  • dtype:元素类型

    arr = np.random.randint(0, 100, size=(4, 5))
    arr.ndim
    arr.shape
    ...

3 ndarray的基本操作

  • 索引

    • 一维与列表完全一致 多维时同理
  • 切片

    • 一维与列表完全一致 多维时同理
    np.random.seed(100)  # 固定随机性#随机因子:系统的时间
    arr = np.random.randint(0, 100, size=(4, 5))
    #获取二维数组前两行
    arr[0:2]
    #获取二维数组前两列
    arr[:,0:2]
    # 获取二维数组前两行和前两列数据
    arr[0:2,0:2]
    # 将数组的行倒序
    arr[::-1]
    #列倒序
    arr[:,::-1]
    #全部倒序
    arr[::-1,::-1]
    # 图片倒置,裁剪
    plt.imshow(img_arr[:,::-1,:])
  • 变形

    • 使用arr.reshape()函数,注意参数是一个tuple!

    • 将一维数组变形成多维数组 arr_1.reshape((2,10))

      arr_1 = np.random.randint(0, 100, size=(1,20))
      print(arr_1)
      print(arr_1.reshape((2, 10)))
      '''[[ 9 93 86 2 27 4 31 1 13 83 4 91 59 67 7 49 47 65 61 14]]
      [[ 9 93 86 2 27 4 31 1 13 83]
      [ 4 91 59 67 7 49 47 65 61 14]]
      '''
    • 将多维数组变形成一维数组 arr.reshape((20,))

  • 级联

    • np.concatenate()

    • 一维,二维,多维数组的级联,实际操作中级联多为二维数组

    • np.concatenate((arr,arr,arr),axis=1)

      array([[ 8, 24, 67, 87, 79],
      [48, 10, 94, 52, 98],
      [53, 66, 98, 14, 34],
      [24, 15, 60, 58, 16]])
      np.concatenate((arr,arr,arr),axis=1)
      array([[ 8, 24, 67, 87, 79, 8, 24, 67, 87, 79, 8, 24, 67, 87, 79],
      [48, 10, 94, 52, 98, 48, 10, 94, 52, 98, 48, 10, 94, 52, 98],
      [53, 66, 98, 14, 34, 53, 66, 98, 14, 34, 53, 66, 98, 14, 34],
      [24, 15, 60, 58, 16, 24, 15, 60, 58, 16, 24, 15, 60, 58, 16]])
    • 应用,合并参数一致的图片

      img_3 = np.concatenate((img_arr,img_arr,img_arr),axis=1)
      img_9 = np.concatenate((img_3,img_3,img_3),axis=0)
      plt.imshow(img_9)
    • 级联的参数是列表:一定要加中括号或小括号

    • 维度必须相同

    • 形状相符:在维度保持一致的前提下,如果进行横向(axis=1)级联,必须保证进行级联的数组行数保持一致。如果进行纵向(axis=0)级联,必须保证进行级联的数组列数保持一致。

    • 可通过axis参数改变级联的方向

4 ndarray的聚合操作

  • 求和np.sum

    arr.sum(axis=1)  # 横向(axis=1)级联,纵向(axis=0)级联
  • 最大最小值:np.max/ np.min

  • 平均值:np.mean()

  • 其他聚合操作

5 ndarray 的排序

p.sort()与ndarray.sort()都可以,但有区别:

  • np.sort()不改变输入
  • ndarray.sort()本地处理,不占用空间,但改变输入
np.sort(arr,axis=0)

数据分析之Numpy的基本操作的更多相关文章

  1. 数据分析 之 NumPy

    目录 简单了解数据分析 Python数据分析三剑客(Numpy,Pandas,Matplotlib) 简单使用np.array() 使用np的routines函数创建数组 ndarray N维数组对象 ...

  2. 利用Python进行数据分析(5) NumPy基础: ndarray索引和切片

    概念理解 索引即通过一个无符号整数值获取数组里的值. 切片即对数组里某个片段的描述. 一维数组 一维数组的索引 一维数组的索引和Python列表的功能类似: 一维数组的切片 一维数组的切片语法格式为a ...

  3. 数据分析入门——numpy类库基础知识

    numpy类库是数据分析的利器,用于高性能的科学计算和数据分析.使用python进行数据分析,numpy这个类库是必须掌握的.numpy并没有提供强大的数据分析功能,而是它提供的ndarray数据结构 ...

  4. Python numpy的基本操作你一般人都不会

    前言 本文的文字及图片来源于网络,仅供学习.交流使用,不具有任何商业用途,版权归原作者所有,如有问题请及时联系我们以作处理.  PS:如有需要最新Python学习资料的小伙伴可以加点击下方链接自行获取 ...

  5. python numpy的基本操作

    站长资讯平台:文章目录0.NumPy 与 ndarry1.数组属性查看:类型.尺寸.形状.维度2.numpy元素中数据存储方式,数据类型,类型转换2.1 查看元素数据存储类型2.2 元素数据存储类型转 ...

  6. 数据分析01 /numpy模块

    数据分析01 /数据分析之numpy模块 目录 数据分析01 /数据分析之numpy模块 1. numpy简介 2. numpy的创建 3. numpy的方法 4. numpy的常用属性 5. num ...

  7. NumPy的基本操作

    1 简介 NumPy 是用于处理数组的 python 库,部分用 Python 编写,但是大多数需要快速计算的部分都是用 C 或 C ++ 编写的.它还拥有在线性代数.傅立叶变换和矩阵领域中工作的函数 ...

  8. (零)机器学习入门与经典算法之numpy的基本操作

    1.根据索引来获取元素* 创建一个索引列表ind,用来装载索引,当numpy数据是一维数据时:一个索引对应的是一个元素具体的例子如下: import numpy as np # 数据是一维数据时:索引 ...

  9. 数据分析三剑客 numpy,oandas,matplotlib

    数据分析: 是不把隐藏在看似杂乱无章的数据域背后的信息提炼出来,总结出所研究对象内在规律 NumPy(Numerical Python) 是 Python 语言的一个扩展程序库,支持大量的维度数组与矩 ...

随机推荐

  1. 可视化BI软件为企业提升数据分析效率

    ​可视化BI软件经过几十年的不断发展,已成为大型企业进行商业决策不可缺少的工具.在BI软件问世之前,由于做数据分析可视化的时间较长.人力成本较高,企业一直处于忽视的状态.可视化BI软件的出现极大地提高 ...

  2. 【C#IO 操作】字符流(StreamWriter、StreamReader)

    StreamWaiter类和StreamReader类的用法 事实上, StreamReader为了性能的考虑, 在自己的内部内置并维护了一个byte buffer. 如果在声明StreamReade ...

  3. Ng ML笔记

    目录 一.线性回归 1,假设函数.代价函数,梯度下降 2,特征处理 3,代价函数和学习速率 4,特征和多项式回归 5,正规方程 二.逻辑回归(Logistic Regression,LR) 1,假设函 ...

  4. Zookeeper集群搭建及原理

    1 概述 1.1 简介 ZooKeeper 是 Apache 的一个顶级项目,为分布式应用提供高效.高可用的分布式协调服务,提供了诸如数据发布/订阅.负载均衡.命名服务.分布式协调/通知和分布式锁等分 ...

  5. python刷剑指offer(21-40)(一刷)

    21.输入两个整数序列,第一个序列表示栈的压入顺序,请判断第二个序列是否可能为该栈的弹出顺序.假设压入栈的所有数字均不相等.例如序列1,2,3,4,5是某栈的压入顺序,序列4,5,3,2,1是该压栈序 ...

  6. go泛型教程

    泛型 原文 在线阅读 导读: 约束 使用方法 实现原理 跟其它语言的泛型进行对比 用例子学泛型 issues 泛型需满足 go1.18+ 约束 go使用interface作为约束,约束的意思是约束了这 ...

  7. 用Assert(断言)封装异常,让代码更优雅(附项目源码)

    有关Assert断言大家并不陌生,我们在做单元测试的时候,看业务事务复合预期,我们可以通过断言来校验,断言常用的方法如下: public class Assert { /** * 结果 = 预期 则正 ...

  8. [2022-2-26] OICLASS-USACO提高组模拟赛 C·Convoluted Intervals S

    这道题非常简单啊,我看很多人都做出来了,张林昨天也讲的很明白了,那我来简单写一下: 暴力思路(10pts) 我们发现,我们只需要模拟画出一个图然后进行暴力枚举就行了. 差分+桶+加乘原理思路(100p ...

  9. mysql命令flush privileges命令

    修改一个用户的密码,命令如下 mysql> update user set password=password('新密码') where user='用户名'; 执行后报错: ERROR 105 ...

  10. 微信小程序 和 laravel8 实现搜索后分页 加载

    Page({ /** * 页面的初始数据 */ data: { activity:{}, page:1, last_page : 0, keyword:'' }, //加载 scroll(e){ le ...