numpy菜鸟教程总结

numpy菜鸟教程知识梳理

文章目录

        • NumPy Ndarray 对象
          • ndarray内部结构说明
          • numpy.array的参数
        • numpy数据类型
          • 基本数据类型
          • 数据类型对象(dtype)
            • numpy.dtype的使用
            • 使用dtype构造结构体
        • NumPy 数组属性
          • NumPy 的数组中比较重要 ndarray 对象属性(维度、秩等)
        • NumPy 创建数组
          • numpy.empty
          • numpy.zeros
          • numpy.ones
        • NumPy 从已有的数组创建数组
          • numpy.asarray
          • numpy.frombuffer
          • numpy.fromiter
        • NumPy 从数值范围创建数组
          • numpy.arange
          • numpy.linspace
          • numpy.logspace
        • NumPy 切片和索引
          • slice例子
          • 冒号:索引
          • 多维数组的索引提取方法
          • 省略号...的使用
        • NumPy 高级索引
          • 整数数组索引
          • 布尔索引
          • 花式索引
        • NumPy 广播(Broadcast)
        • NumPy 迭代数组
          • 使用迭代器来遍历数组元素( nditer)
          • 修改数组中元素的值
          • 使用外部循环
          • 广播迭代
        • Numpy 数组操作
          • 修改数组形状
          • 翻转数组
          • 修改数组维度
          • 连接数组
          • 分割数组
          • 数组元素的添加与删除
        • NumPy 位运算
          • 相关函数
        • NumPy 字符串函数
        • NumPy 数学函数
          • 三角函数(sin、cos、tan、arcsin、arccos、arctan、degrees)
          • 舍入函数
            • numpy.around()
            • numpy.floor()
            • numpy.ceil()
        • NumPy 算术函数
          • 加减乘除
            • add()
            • subtract()
            • multiply()
            • divide()
          • 其它
            • numpy.reciprocal()
            • numpy.power()
            • numpy.mod()
        • NumPy 统计函数
            • numpy.amin() 和 numpy.amax()
            • numpy.ptp()
            • numpy.percentile()
            • numpy.median()
            • numpy.mean()
            • numpy.average()
            • 标准差 numpy.std()
            • 方差 numpy.var()
        • NumPy 排序、条件刷选函数
            • numpy.sort()
            • numpy.argsort()
            • numpy.lexsort()
            • msort、sort_complex、partition、argpartition
            • numpy.argmax() 和 numpy.argmin()
            • numpy.nonzero()
            • numpy.where()
            • numpy.extract()
        • NumPy 字节交换
          • 大端模式和小端模式
            • numpy.ndarray.byteswap()
        • NumPy 副本和视图
            • 无复制
            • ndarray.view() (视图或浅拷贝)
            • ndarray.copy()(副本或深拷贝)
        • NumPy 矩阵库(Matrix)
            • matlib.empty()
            • numpy.matlib.zeros()
            • numpy.matlib.ones()
            • numpy.matlib.eye()
            • numpy.matlib.identity()
            • numpy.matlib.rand()
          • 矩阵和ndarray对象的转换
            • numpy.asarray()
            • numpy.asmatrix()
        • NumPy 线性代数
            • numpy.dot()
            • numpy.vdot()
            • numpy.inner()
            • numpy.matmul
            • numpy.linalg.det()
            • numpy.linalg.solve()
            • numpy.linalg.inv()
        • NumPy IO
          • 常用的IO函数
        • NumPy Matplotlib

NumPy Ndarray 对象

NumPy 最重要的一个特点是其 N 维数组对象 ndarray,它是一系列同类型数据的集合,以 0 下标为开始进行集合中元素的索引。

ndarray内部结构说明
numpy.array的参数
  • numpy.array(object, dtype = None, copy = True, order = None, subok = False, ndmin = 0)
    numpy菜鸟教程总结_第1张图片
  • 相关例子

numpy数据类型

基本数据类型
数据类型对象(dtype)
numpy.dtype的使用

numpy.dtype(object, align, copy)

使用dtype构造结构体
  • 例子

NumPy 数组属性

在 NumPy中,每一个线性的数组称为是一个轴(axis),也就是维度(dimensions)。比如说,二维数组相当于是两个一维数组,其中第一个一维数组中每个元素又是一个一维数组。所以一维数组就是 NumPy 中的轴(axis),第一个轴相当于是底层数组,第二个轴是底层数组里的数组。而轴的数量——秩,就是数组的维数。

NumPy 的数组中比较重要 ndarray 对象属性(维度、秩等)

numpy菜鸟教程总结_第2张图片

NumPy 创建数组

numpy.empty

numpy.empty 方法用来创建一个指定形状(shape)、数据类型(dtype)且未初始化的数组:

numpy.empty(shape, dtype = float, order = 'C')

numpy菜鸟教程总结_第3张图片

numpy.zeros

创建指定大小的数组,数组元素以 0 来填充:

numpy.zeros(shape, dtype = float, order = 'C')

numpy菜鸟教程总结_第4张图片

numpy.ones

创建指定形状的数组,数组元素以 1 来填充:

numpy.ones(shape, dtype = None, order = 'C')

numpy菜鸟教程总结_第5张图片

NumPy 从已有的数组创建数组

numpy.asarray
numpy.frombuffer
numpy.fromiter

NumPy 从数值范围创建数组

numpy.arange
numpy.linspace
numpy.logspace

NumPy 切片和索引

ndarray对象的内容可以通过索引或切片来访问和修改。
ndarray 数组可以基于 0 - n 的下标进行索引,切片对象可以通过内置的 slice 函数,并设置 start, stop 及 step 参数进行,从原数组中切割出一个新数组。

slice例子
冒号:索引

冒号 : 的解释:如果只放置一个参数,如 [2],将返回与该索引相对应的单个元素。如果为 [2:],表示从该索引开始以后的所有项都将被提取。如果使用了两个参数,如 [2:7],那么则提取两个索引(不包括停止索引)之间的项。

多维数组的索引提取方法
省略号…的使用

NumPy 高级索引

整数数组索引
布尔索引

我们可以通过一个布尔数组来索引目标数组。
布尔索引通过布尔运算(如:比较运算符)来获取符合指定条件的元素的数组。

花式索引

NumPy 广播(Broadcast)

当运算中的 2 个数组的形状不同时,numpy 将自动触发广播机制。
numpy菜鸟教程总结_第6张图片

NumPy 迭代数组

使用迭代器来遍历数组元素( nditer)
  • 行优先或列优先遍历
修改数组中元素的值

默认使用迭代器时无法修改数组元素,如果修改需要修改迭代器参数。

使用外部循环

迭代器中有flags参数。

广播迭代

如果两个数组是可广播的,nditer 组合对象能够同时迭代它们。 假设数组 a 的维度为 3X4,数组 b 的维度为 1X4 ,则使用以下迭代器(数组 b 被广播到 a 的大小)。见例子。

Numpy 数组操作

修改数组形状

numpy菜鸟教程总结_第7张图片

翻转数组

numpy菜鸟教程总结_第8张图片

修改数组维度

numpy菜鸟教程总结_第9张图片

连接数组

numpy菜鸟教程总结_第10张图片

分割数组

numpy菜鸟教程总结_第11张图片

数组元素的添加与删除

numpy菜鸟教程总结_第12张图片

NumPy 位运算

相关函数

numpy菜鸟教程总结_第13张图片

NumPy 字符串函数

以下函数用于对 dtype 为 numpy.string_ 或 numpy.unicode_ 的数组执行向量化字符串操作。它们基于 Python 内置库中的标准字符串函数。这些函数在字符数组类(numpy.char)中定义。
numpy菜鸟教程总结_第14张图片

NumPy 数学函数

NumPy 包含大量的各种数学运算的函数,包括三角函数,算术运算的函数,复数处理函数等。

三角函数(sin、cos、tan、arcsin、arccos、arctan、degrees)

numpy.degrees将弧度转换为角度

舍入函数
numpy.around()

返回指定数字的四舍五入值。

numpy.floor()

返回小于或者等于指定表达式的最大整数,即向下取整。

numpy.ceil()

返回大于或者等于指定表达式的最小整数,即向上取整。

NumPy 算术函数

加减乘除

需要注意的是数组必须具有相同的形状或符合数组广播规则。

add()
subtract()
multiply()
divide()
其它
numpy.reciprocal()

返回参数逐元素的倒数。如 1/4 倒数为 4/1。

numpy.power()

将第一个输入数组中的元素作为底数,计算它与第二个输入数组中相应元素的幂。

numpy.mod()

计算输入数组中相应元素的相除后的余数。 函数 numpy.remainder() 也产生相同的结果。

NumPy 统计函数

numpy.amin() 和 numpy.amax()

numpy.amin() 用于计算数组中的元素沿指定轴的最小值。
numpy.amax() 用于计算数组中的元素沿指定轴的最大值。

numpy.ptp()

计算数组中元素最大值与最小值的差(最大值 - 最小值)。

numpy.percentile()

百分位数是统计中使用的度量,表示小于这个值的观察值的百分比。

numpy.median()

用于计算数组 a 中元素的中位数(中值)

numpy.mean()

返回数组中元素的算术平均值。 如果提供了轴,则沿其计算。

numpy.average()

可以使用加权平均值。

标准差 numpy.std()
方差 numpy.var()

NumPy 排序、条件刷选函数

numpy.sort()
numpy.argsort()

返回的是数组值从小到大的索引值。

numpy.lexsort()
msort、sort_complex、partition、argpartition

numpy菜鸟教程总结_第15张图片

numpy.argmax() 和 numpy.argmin()

numpy.argmax() 和 numpy.argmin()函数分别沿给定轴返回最大和最小元素的索引。

numpy.nonzero()

返回输入数组中非零元素的索引。

numpy.where()

返回输入数组中满足给定条件的元素的索引。

numpy.extract()

根据某个条件从数组中抽取元素,返回满条件的元素。

NumPy 字节交换

大端模式和小端模式
numpy.ndarray.byteswap()

numpy.ndarray.byteswap() 函数将 ndarray 中每个元素中的字节进行大小端转换。

NumPy 副本和视图

副本是一个数据的完整的拷贝,如果我们对副本进行修改,它不会影响到原始数据,物理内存不在同一位置。

视图是数据的一个别称或引用,通过该别称或引用亦便可访问、操作原有数据,但原有数据不会产生拷贝。如果我们对视图进行修改,它会影响到原始数据,物理内存在同一位置。

无复制

直接赋值,a = b,则b值更改,a值也更改

ndarray.view() (视图或浅拷贝)

ndarray.view() 方会创建一个新的数组对象,该方法创建的新数组的维数更改不会更改原始数据的维数。
使用切片创建视图修改数据会影响到原始数组:

ndarray.copy()(副本或深拷贝)

ndarray.copy() 函数创建一个副本。 对副本数据进行修改,不会影响到原始数据,它们物理内存不在同一位置

NumPy 矩阵库(Matrix)

NumPy 中包含了一个矩阵库 numpy.matlib,该模块中的函数返回的是一个矩阵,而不是 ndarray 对象。

matlib.empty()

创建一个新的初始化后的矩阵

numpy.matlib.zeros()

创建一个以0填充的矩阵

numpy.matlib.ones()

创建一个以1填充的矩阵

numpy.matlib.eye()

numpy.matlib.eye() 函数返回一个矩阵,对角线元素为 1,其他位置为零。

numpy.matlib.identity()

numpy.matlib.identity() 函数返回给定大小的单位矩阵。

numpy.matlib.rand()

numpy.matlib.rand() 函数创建一个给定大小的矩阵,数据是随机填充的。

矩阵和ndarray对象的转换
numpy.asarray()
numpy.asmatrix()

NumPy 线性代数

NumPy 提供了线性代数函数库 linalg,该库包含了线性代数所需的所有功能,可以看看下面的说明:
numpy菜鸟教程总结_第16张图片

numpy.dot()

数组或矩阵的点积

numpy.vdot()

两个向量的点积

numpy.inner()

内积

numpy.matmul

矩阵相乘

numpy.linalg.det()

numpy.linalg.det() 函数计算输入矩阵的行列式。

numpy.linalg.solve()

numpy.linalg.solve() 函数给出了矩阵形式的线性方程的解。

numpy.linalg.inv()

numpy.linalg.inv() 函数计算矩阵的乘法逆矩阵。

NumPy IO

常用的IO函数
  • load() 和 save() 函数是读写文件数组数据的两个主要函数,默认情况下,数组是以未压缩的原始二进制格式保存在扩展名为 .npy 的文件中。
  • savze() 函数用于将多个数组写入文件,默认情况下,数组是以未压缩的原始二进制格式保存在扩展名为 .npz 的文件中。
  • loadtxt() 和 savetxt() 函数处理正常的文本文件(.txt 等)

NumPy Matplotlib

你可能感兴趣的:(编程语言)