ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

numpy

2022-08-11 16:02:19  阅读:165  来源: 互联网

标签:创建 切片 索引 数组 numpy ndarray


1. numpy简介

numpy是高性能科学计算和数据分析的基础包,它是pandas等工具的基础。

numpy的主要功能:

  • ndarray,一个多维数组结构,高效且节省空间
  • 无需循环对整组数据进行快速运算的数学函数
  • 线性代数、随机数生成和傅里叶变换功能

安装方法:pip install numpy
导入方式:import numpy as np

2. ndarray 多维数组对象

创建ndarray:np.array(array_like)
数组与列表的区别:

  • 数组对象内的元素类型必须相同
  • 数组大小不可修改(元素总数)

3. ndarray 常用属性

  • T:数组的转置(对高维数组而言)

    \[\begin{pmatrix} 1 & 2 & 3 \\ 4 & 5 & 6 \\ \end{pmatrix} \Rightarrow \begin{pmatrix} 1 & 4 \\ 2 & 5 \\ 3 & 6 \\ \end{pmatrix} \]

  • size:数组元素的个数
  • ndim:数组的维数
  • shape:数组的维度大小(形状或结构)元组形式
  • dtype:数组元素的数据类型

4. ndarray 数据类型

  • 布尔型:bool_
  • 整型:int_, int8, int16, int32, int64
  • 无符号类型:uint8, uint16, uint32, uint64
  • 浮点型:float_, float16, float32, float64
  • 复数型:complex_, complex64, complex128

5. ndarray 创建

方法 说明
array() 将列表转换为数组,可选择显式指定dtype
arange() range的numpy版,支持浮点数
linspace() 类似于arange(),第三个参数为数组的长度
zeros() 根据指定形状和dtype创建全0数组
ones() 根据指定形状和dtype创建全1数组
empty() 根据指定形状和dytpe创建空数组(元素的值为随机值,是内存残留值)
eye() 根据指定边长和dtype创建单位矩阵

6. ndarray 批量运算

  • 数组和标量之间的运算
    • a + 1
    • a * 3
    • 1 // 3
    • a ** 0.5
    • a > 5
  • 同样大小数组之间的运算
    • a + b
    • a / b
    • a ** b
    • a % b
    • a == b

7. ndarray 索引

  • 一维数组的索引:a[5]
  • 多维数组的索引:
    • 列表式写法:a[5][3]
    • 新式写法:a[5,3]

8. ndarray 切片

  • 一维数组的切片:a[5:8], a[4:], a[2:10]=1
  • 多维数组的切片:a[1:2, 3:4], a[:, 3:5], a[:, 1]
  • 数组切片与列表切片的不同:
    数组切片时不会自动复制,而是创建一个视图,在切片数组上的修改会影响原数组。
    copy()方法可以创建数组的深拷贝

9. ndarray 布尔型索引

问题1:给一个数组,选出数组中所有大于5的数。
答案:a[a>5]
问题2:给一个数组,选出数组中所有大于5的偶数。
答案:a[(a > 5) & (a % 2 == 0)]
问题3:给一个数组,选出数组中所有大于5的数和偶数
答案:a[(a >5) | (a % 2 == 0)]

原理说明:

  • 数组与标量的运算:a>5会与a中的每一个元素进行判断,返回一个布尔数组
  • 布尔型索引:将同样大小的布尔数组传进索引,会返回一个由所有true对应位置的元素的数组

10. ndarray 花式索引

问题1:对于一个数组,选出其第1,3,4,6,7个元素,组成新的二维数组。
答案:a[[1, 3, 4, 6, 7]]
问题2:对一个数组,选出其第一列和第三列,组成新的二维数组
答案:a[:, [1, 3]]

11. numpy 通用函数

  • 通用函数:能同时对数组中的所有元素进行运算的函数
  • 常见通用函数:
    • 一元函数:abssqrt,exo,log,ceilfloorrinttruncmodfisnanisinf,cos,sin,tan
    • 二元函数:add,substrat,multiply,divide,power,mod,maximummininum

12. 浮点数特殊值

  • nan(Not a Number):不等于任何浮点数(nan != nan)
  • inf(infinity):比任何浮点数都大
  • numpy中创建特殊值:np.nan np.inf
  • 在数据分析中,nan常被用作表示数据缺失值

13. numpy 数学和统计方式

  • sum:求和
  • mean:求平均值
  • std:求标准差
  • var:求方差
  • min:求最小值
  • max:求最大值
  • argmin:求最小值索引
  • argmax:求最大值索引

14. numpy 随机数生成

随机数函数在np.random子包内:

  • rand 给定形状产生随机数组(1>rand>0之间的数)
  • randint 给定形状产生随机整数
  • choice 给定形状产生随机选择
  • shuffle 与random.shuffle相同
  • uniform 给定形状产生随机数组

标签:创建,切片,索引,数组,numpy,ndarray
来源: https://www.cnblogs.com/anorangecat/p/16571425.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有