NumPy 是一个 Python 包。 它代表 “Numeric Python”。 它是一个由多维数组对象和用于处理数组的例程集合组成的库。
Numeric,即 NumPy 的前身,是由 Jim Hugunin 开发的。 也开发了另一个包 Numarray ,它拥有一些额外的功能。 2005年,Travis Oliphant 通过将 Numarray 的功能集成到 Numeric 包中来创建 NumPy 包。 这个开源项目有很多贡献者。
使用NumPy,开发人员可以执行以下操作:
- 数组的算数和逻辑运算。
- 傅立叶变换和用于图形操作的例程。
- 与线性代数有关的操作。 NumPy 拥有线性代数和随机数生成的内置函数。
NumPy 通常与 SciPy(Scientific Python)和 Matplotlib(绘图库)一起使用。 这种组合广泛用于替代 MatLab,是一个流行的技术计算平台。 但是,Python 作为 MatLab 的替代方案,现在被视为一种更加现代和完整的编程语言。
NumPy 是开源的,这是它的一个额外的优势。
NumPy 中定义的最重要的对象是称为 的 N 维数组类型。 它描述相同类型的元素集合。 可以使用基于零的索引访问集合中的项目。
中的每个元素在内存中使用相同大小的块。 中的每个元素是数据类型对象的对象(称为 )。
从对象提取的任何元素(通过切片)由一个数组标量类型的 Python 对象表示。 下图显示了,数据类型对象()和数组标量类型之间的关系。
Ndarray
类的实例可以通过本教程后面描述的不同的数组创建例程来构造。 基本的是使用 NumPy 中的数组函数创建的,如下所示:
它从任何暴露数组接口的对象,或从返回数组的任何方法创建一个ndarray。
上面的构造器接受以下参数:
看看下面的例子来更好地理解。
示例 1
输出如下:
示例 2
输出如下:
示例 3
输出如下:
示例 4
输出如下:
ndarray 对象由计算机内存中的一维连续区域组成,带有将每个元素映射到内存块中某个位置的索引方案。 内存块以按行(C 风格)或按列(FORTRAN 或 MatLab 风格)的方式保存元素。
NumPy 支持比 Python 更多种类的数值类型。 下表显示了 NumPy 中定义的不同标量数据类型。
NumPy 数字类型是(数据类型)对象的实例,每个对象具有唯一的特征。 这些类型可以是,等。
数据类型对象描述了对应于数组的固定内存块的解释,取决于以下方面:
- 数据类型(整数、浮点或者 Python 对象)
- 数据大小
- 字节序(小端或大端)
- 在结构化类型的情况下,字段的名称,每个字段的数据类型,和每个字段占用的内存块部分。
- 如果数据类型是子序列,它的形状和数据类型。
字节顺序取决于数据类型的前缀或。 意味着编码是小端(最小有效字节存储在最小地址中)。 意味着编码是大端(最大有效字节存储在最小地址中)。
可由一下语法构造:
参数为:
- :被转换为数据类型的对象。
- :如果为,则向字段添加间隔,使其类似 C 的结构体。
- ? 生成对象的新副本,如果为,结果是内建数据类型对象的引用。
示例 1
输出如下:
示例 2
输出如下:
示例 3
输出如下:
下面的例子展示了结构化数据类型的使用。 这里声明了字段名称和相应的标量数据类型。
示例 4
输出如下:
示例 5
输出如下:
示例 6
输出如下:
示例 7
以下示例定义名为 student 的结构化数据类型,其中包含字符串字段,整数字段和浮点字段。 此应用于对象。
输出如下:
示例 8
输出如下:
每个内建类型都有一个唯一定义它的字符代码:
- :布尔值
- :符号整数
- :无符号整数
- :浮点
- :复数浮点
- :时间间隔
- :日期时间
- :Python 对象
- :字节串
- :Unicode
- :原始数据()
这一章中,我们会讨论 NumPy 的多种数组属性。
这一数组属性返回一个包含数组维度的元组,它也可以用于调整数组大小。
示例 1
输出如下:
示例 2
输出如下:
示例 3
NumPy 也提供了函数来调整数组大小。
输出如下:
这一数组属性返回数组的维数。
示例 1
输出如下:
示例 2
输出如下:
这一数组属性返回数组中每个元素的字节单位长度。
示例 1
输出如下:
示例 2
输出如下:
对象拥有以下属性。这个函数返回了它们的当前值。
示例
下面的例子展示当前的标志。
输出如下:
新的对象可以通过任何下列数组创建例程或使用低级构造函数构造。
它创建指定形状和的未初始化数组。 它使用以下构造函数:
构造器接受下列参数:
示例
下面的代码展示空数组的例子:
输出如下:
注意:数组元素为随机值,因为它们未初始化。
返回特定大小,以 0 填充的新数组。
构造器接受下列参数:
示例 1
输出如下:
示例 2
输出如下:
示例 3
输出如下:
返回特定大小,以 1 填充的新数组。
构造器接受下列参数:
示例 1
输出如下:
示例 2
输出如下:
这一章中,我们会讨论如何从现有数据创建数组。
此函数类似于,除了它有较少的参数。 这个例程对于将 Python 序列转换为非常有用。
构造器接受下列参数:
下面的例子展示了如何使用函数:
示例 1
输出如下:
示例 2
输出如下:
示例 3
输出如下:
示例 4
输出如下:
此函数将缓冲区解释为一维数组。 暴露缓冲区接口的任何对象都用作参数来返回。
构造器接受下列参数:
示例
下面的例子展示了函数的用法。
输出如下:
此函数从任何可迭代对象构建一个对象,返回一个新的一维数组。
构造器接受下列参数:
以下示例展示了如何使用内置的函数返回列表对象。 此列表的迭代器用于形成对象。
示例 1
输出如下:
示例 2
输出如下:
这一章中,我们会学到如何从数值范围创建数组。
这个函数返回对象,包含给定范围内的等间隔值。
构造器接受下列参数:
下面的例子展示了如何使用该函数:
示例 1
输出如下:
示例 2
输出如下:
示例 3
输出如下:
此函数类似于函数。 在此函数中,指定了范围之间的均匀间隔数量,而不是步长。 此函数的用法如下。
构造器接受下列参数:
下面的例子展示了函数的用法。
示例 1
输出如下:
示例 2
输出如下:
示例 3
输出如下:
此函数返回一个对象,其中包含在对数刻度上均匀分布的数字。 刻度的开始和结束端点是某个底数的幂,通常为 10。
函数的输出由以下参数决定:
下面的例子展示了函数的用法。
示例 1
输出如下:
示例 2
输出如下:
对象的内容可以通过索引或切片来访问和修改,就像 Python 的内置容器对象一样。
如前所述,对象中的元素遵循基于零的索引。 有三种可用的索引方法类型: 字段访问,基本切片和高级索引。
基本切片是 Python 中基本切片概念到 n 维的扩展。 通过将,和参数提供给内置的函数来构造一个 Python 对象。 此对象被传递给数组来提取数组的一部分。
示例 1
输出如下:
在上面的例子中,对象由函数创建。 然后,分别用起始,终止和步长值,和定义切片对象。 当这个切片对象传递给时,会对它的一部分进行切片,从索引到,步长为。
通过将由冒号分隔的切片参数()直接提供给对象,也可以获得相同的结果。
示例 2
输出如下:
如果只输入一个参数,则将返回与索引对应的单个项目。 如果使用,则从该索引向后的所有项目将被提取。 如果使用两个参数(以分隔),则对两个索引(不包括停止索引)之间的元素以默认步骤进行切片。
示例 3
输出如下:
示例 4
输出如下:
输出如下:
上面的描述也可用于多维。
输出如下:
切片还可以包括省略号(),来使选择元组的长度与数组的维度相同。 如果在行位置使用省略号,它将返回包含行中元素的。
输出如下:
如果一个是非元组序列,数据类型为整数或布尔值的,或者至少一个元素为序列对象的元组,我们就能够用它来索引。高级索引始终返回数据的副本。 与此相反,切片只提供了一个视图。
有两种类型的高级索引:整数和布尔值。
这种机制有助于基于 N 维索引来获取数组中任意元素。 每个整数数组表示该维度的下标值。 当索引的元素个数就是目标的维度时,会变得相当直接。
以下示例获取了对象中每一行指定列的一个元素。 因此,行索引包含所有行号,列索引指定要选择的元素。
示例 1
输出如下:
该结果包括数组中,和位置处的元素。
下面的示例获取了 4X3 数组中的每个角处的元素。 行索引是和,而列索引是和。
示例 2
输出如下:
返回的结果是包含每个角元素的对象。
高级和基本索引可以通过使用切片或省略号与索引数组组合。 以下示例使用作为列索引和高级索引。 当切片用于两者时,结果是相同的。 但高级索引会导致复制,并且可能有不同的内存布局。
示例 3
输出如下:
当结果对象是布尔运算(例如比较运算符)的结果时,将使用此类型的高级索引。
示例 1
这个例子中,大于 5 的元素会作为布尔索引的结果返回。
输出如下:
示例 2
这个例子使用了(取补运算符)来过滤。
输出如下:
示例 3
以下示例显示如何从数组中过滤掉非复数元素。
输出如下:
术语广播是指 NumPy 在算术运算期间处理不同形状的数组的能力。 对数组的算术运算通常在相应的元素上进行。 如果两个阵列具有完全相同的形状,则这些操作被无缝执行。
示例 1
输出如下:
如果两个数组的维数不相同,则元素到元素的操作是不可能的。 然而,在 NumPy 中仍然可以对形状不相似的数组进行操作,因为它拥有广播功能。 较小的数组会广播到较大数组的大小,以便使它们的形状可兼容。
如果满足以下规则,可以进行广播:
- 较小的数组会在前面追加一个长度为 1 的维度。
- 输出数组的每个维度的大小是输入数组该维度大小的最大值。
- 如果输入在每个维度中的大小与输出大小匹配,或其值正好为 1,则在计算中可它。
- 如果输入的某个维度大小为 1,则该维度中的第一个数据元素将用于该维度的所有计算。
如果上述规则产生有效结果,并且满足以下条件之一,那么数组被称为可广播的。
- 数组拥有相同形状。
- 数组拥有相同的维数,每个维度拥有相同长度,或者长度为 1。
- 数组拥有极少的维度,可以在其前面追加长度为 1 的维度,使上述条件成立。
下面的例称展示了广播的示例。
示例 2
输出如下:
下面的图片展示了数组如何通过广播来与数组兼容。

array
NumPy 包包含一个迭代器对象。 它是一个有效的多维迭代器对象,可以用于在数组上进行迭代。 数组的每个元素可使用 Python 的标准接口来访问。
让我们使用函数创建一个 3X4 数组,并使用对它进行迭代。
示例 1
输出如下:
示例 2
迭代的顺序匹配数组的内容布局,而不考虑特定的排序。 这可以通过迭代上述数组的转置来看到。
输出如下:
如果相同元素使用 F 风格顺序存储,则迭代器选择以更有效的方式对数组进行迭代。
示例 1
输出如下:
示例 2
可以通过显式提醒,来强制对象使用某种顺序:
输出如下:
对象有另一个可选参数。 其默认值为只读,但可以设置为读写或只写模式。 这将允许使用此迭代器修改数组元素。
示例
输出如下:
类的构造器拥有参数,它可以接受下列值:
示例
在下面的示例中,迭代器遍历对应于每列的一维数组。
输出如下:
如果两个数组是可广播的,组合对象能够同时迭代它们。 假设数组具有维度 3X4,并且存在维度为 1X4 的另一个数组,则使用以下类型的迭代器(数组被广播到的大小)。
示例
输出如下:
NumPy包中有几个例程用于处理对象中的元素。 它们可以分为以下类型:
这个函数在不改变数据的条件下修改形状,它接受如下参数:
其中:
- :要修改形状的数组
- :整数或者整数数组,新的形状应当兼容原有形状
- :为 C 风格顺序,为 F 风格顺序,为保留原顺序。
例子
输出如下:
该函数返回数组上的一维迭代器,行为类似 Python 内建的迭代器。
例子
输出如下:
该函数返回折叠为一维的数组副本,函数接受下列参数:
其中:
- : – 按行, – 按列, – 原顺序, – 元素在内存中的出现顺序。
例子
输出如下:
这个函数返回展开的一维数组,并且按需生成副本。返回的数组和输入数组拥有相同数据类型。这个函数接受两个参数。
构造器接受下列参数:
- : – 按行, – 按列, – 原顺序, – 元素在内存中的出现顺序。
例子
这个函数翻转给定数组的维度。如果可能的话它会返回一个视图。函数接受下列参数:
其中:
- :要转置的数组
- :整数的列表,对应维度,通常所有维度都会翻转。
例子
输出如下:
该函数属于类,行为类似于。
例子
输出如下:
该函数向后滚动特定的轴,直到一个特定位置。这个函数接受三个参数:
其中:
- :输入数组
- :要向后滚动的轴,其它轴的相对位置不会改变
- :默认为零,表示完整的滚动。会滚动到特定位置。
例子
输出如下:
该函数交换数组的两个轴。对于 1.10 之前的 NumPy 版本,会返回交换后数组的试图。这个函数接受下列参数:
- :要交换其轴的输入数组
- :对应第一个轴的整数
- :对应第二个轴的整数
输出如下:
如前所述,NumPy 已经内置了对广播的支持。 此功能模仿广播机制。 它返回一个对象,该对象封装了将一个数组广播到另一个数组的结果。
该函数使用两个数组作为输入参数。 下面的例子说明了它的用法。
输出如下:
此函数将数组广播到新形状。 它在原始数组上返回只读视图。 它通常不连续。 如果新形状不符合 NumPy 的广播规则,该函数可能会抛出。
注意 - 此功能可用于 1.10.0 及以后的版本。
该函数接受以下参数。
例子
输出如下:
函数通过在指定位置插入新的轴来扩展数组形状。该函数需要两个参数:
其中:
- :输入数组
- :新轴插入的位置
例子
输出如下:
函数从给定数组的形状中删除一维条目。 此函数需要两个参数。
其中:
- :输入数组
- :整数或整数元组,用于选择形状中单一维度条目的子集
例子
输出如下:
数组的连接是指连接。 此函数用于沿指定轴连接相同形状的两个或多个数组。 该函数接受以下参数。
其中:
- :相同类型的数组序列
- :沿着它连接数组的轴,默认为 0
例子
输出如下:
此函数沿新轴连接数组序列。 此功能添加自 NumPy 版本 1.10.0。 需要提供以下参数。
其中:
- :相同形状的数组序列
- :返回数组中的轴,输入数组沿着它来堆叠
输出如下:
函数的变体,通过堆叠来生成水平的单个数组。
例子
输出如下:
函数的变体,通过堆叠来生成竖直的单个数组。
输出如下:
该函数沿特定的轴将数组分割为子数组。函数接受三个参数:
其中:
- :被分割的输入数组
- :可以是整数,表明要从输入数组创建的,等大小的子数组的数量。 如果此参数是一维数组,则其元素表明要创建新子数组的点。
- :默认为 0
例子
输出如下:
是函数的特例,其中轴为 1 表示水平分割,无论输入数组的维度是什么。
输出:
是函数的特例,其中轴为 0 表示竖直分割,无论输入数组的维度是什么。下面的例子使之更清楚。
输出如下:
此函数返回指定大小的新数组。 如果新大小大于原始大小,则包含原始数组中的元素的重复副本。 该函数接受以下参数。
其中:
- :要修改大小的输入数组
- :返回数组的新形状
例子
输出如下:
此函数在输入数组的末尾添加值。 附加操作不是原地的,而是分配新的数组。 此外,输入数组的维度必须匹配否则将生成。
函数接受下列函数:
其中:
- :输入数组
- :要向添加的值,比如和形状相同(除了要添加的轴)
- :沿着它完成操作的轴。如果没有提供,两个参数都会被展开。
例子
输出如下:
此函数在给定索引之前,沿给定轴在输入数组中插入值。 如果值的类型转换为要插入,则它与输入数组不同。 插入没有原地的,函数会返回一个新数组。 此外,如果未提供轴,则输入数组会被展开。
函数接受以下参数:
其中:
- :输入数组
- :在其之前插入值的索引
- :要插入的值
- :沿着它插入的轴,如果未提供,则输入数组会被展开
例子

此函数返回从输入数组中删除指定子数组的新数组。 与函数的情况一样,如果未提供轴参数,则输入数组将展开。 该函数接受以下参数:
其中:
- :输入数组
- :可以被切片,整数或者整数数组,表明要从输入数组删除的子数组
- :沿着它删除给定子数组的轴,如果未提供,则输入数组会被展开
例子
输出如下:
此函数返回输入数组中的去重元素数组。 该函数能够返回一个元组,包含去重数组和相关索引的数组。 索引的性质取决于函数调用中返回参数的类型。
其中:
- :输入数组,如果不是一维数组则会展开
- :如果为,返回输入数组中的元素下标
- :如果为,返回去重数组的下标,它可以用于重构输入数组
- :如果为,返回去重数组中的元素在原数组中的出现次数
例子
输出如下:
下面是 NumPy 包中可用的位操作函数。
通过函数对输入数组中的整数的二进制表示的相应位执行位与运算。
例子
输出如下:
你可以使用下表验证此输出。 考虑下面的位与真值表。
| | | 1 | 1 | 0 | 1 |
| — | — |
| AND |
| | 1 | 0 | 0 | 0 | 1 |
| result | 0 | 0 | 0 | 0 | 1 |
通过函数对输入数组中的整数的二进制表示的相应位执行位或运算。
例子
输出如下:
你可以使用下表验证此输出。 考虑下面的位或真值表。
| | | 1 | 1 | 0 | 1 |
| — | — |
| OR |
| | 1 | 0 | 0 | 0 | 1 |
| result | 1 | 1 | 1 | 0 | 1 |
此函数计算输入数组中整数的位非结果。 对于有符号整数,返回补码。
例子
输出如下:
请注意,函数返回给定宽度中十进制数的二进制表示。
函数将数组元素的二进制表示中的位向左移动到指定位置,右侧附加相等数量的 0。
例如,
输出如下:
函数将数组元素的二进制表示中的位向右移动到指定位置,左侧附加相等数量的 0。
输出如下:
以下函数用于对为或的数组执行向量化字符串操作。 它们基于 Python 内置库中的标准字符串函数。
这些函数在字符数组类()中定义。 较旧的 Numarray 包包含类。 类中的上述函数在执行向量化字符串操作时非常有用。
函数执行按元素的字符串连接。
输出如下:
这个函数执行多重连接。
输出如下:
此函数返回所需宽度的数组,以便输入字符串位于中心,并使用在左侧和右侧进行填充。
输出如下:
函数返回字符串的副本,其中第一个字母大写
输出如下:
返回输入字符串的按元素标题转换版本,其中每个单词的首字母都大写。
输出如下:
函数返回一个数组,其元素转换为小写。它对每个元素调用。
输出如下:
函数返回一个数组,其元素转换为大写。它对每个元素调用。
输出如下:
此函数返回输入字符串中的单词列表。 默认情况下,空格用作分隔符。 否则,指定的分隔符字符用于分割字符串。
输出如下:
函数返回数组中元素的单词列表,以换行符分割。
输出如下:
,,都会用作换行符。
函数返回数组的副本,其中元素移除了开头或结尾处的特定字符。
输出如下:
这个函数返回一个字符串,其中单个字符由特定的分隔符连接。
输出如下:
这个函数返回字符串副本,其中所有字符序列的出现位置都被另一个给定的字符序列取代。
输出如下:
这个函数在给定的字符串中使用特定编码调用。
输出如下:
此函数对数组中的每个元素调用函数。 默认编码是,可以使用标准 Python 库中的编解码器。
输出如下:
很容易理解的是,NumPy 包含大量的各种数学运算功能。 NumPy 提供标准的三角函数,算术运算的函数,复数处理函数等。
NumPy 拥有标准的三角函数,它为弧度制单位的给定角度返回三角函数比值。
示例
输出如下:
,,和函数返回给定角度的,和的反三角函数。 这些函数的结果可以通过函数通过将弧度制转换为角度制来验证。
示例
输出如下:
这个函数返回四舍五入到所需精度的值。 该函数接受以下参数。
其中:
示例
输出如下:
此函数返回不大于输入参数的最大整数。 即标量 的下限是最大的整数 ,使得。 注意在Python中,向下取整总是从 0 舍入。
示例
输出如下:
函数返回输入值的上限,即,标量的上限是最小的整数 ,使得。
示例
输出如下:
用于执行算术运算(如,,和)的输入数组必须具有相同的形状或符合数组广播规则。
示例
输出如下:
让我们现在来讨论 NumPy 中提供的一些其他重要的算术函数。
此函数返回参数逐元素的倒数,。 由于 Python 处理整数除法的方式,对于绝对值大于 1 的整数元素,结果始终为 0, 对于整数 0,则发出溢出警告。
示例
输出如下:
此函数将第一个输入数组中的元素作为底数,计算它与第二个输入数组中相应元素的幂。
输出如下:
此函数返回输入数组中相应元素的除法余数。 函数也产生相同的结果。
输出如下:
以下函数用于对含有复数的数组执行操作。
- 返回复数类型参数的实部。
- 返回复数类型参数的虚部。
- 返回通过改变虚部的符号而获得的共轭复数。
- 返回复数参数的角度。 函数的参数是。 如果为,返回的角度以角度制来表示,否则为以弧度制来表示。
输出如下:
NumPy 有很多有用的统计函数,用于从数组中给定的元素中查找最小,最大,百分标准差和方差等。 函数说明如下:
这些函数从给定数组中的元素沿指定轴返回最小值和最大值。
示例
输出如下:
函数返回沿轴的值的范围(最大值 - 最小值)。
输出如下:
百分位数是统计中使用的度量,表示小于这个值得观察值占某个百分比。 函数接受以下参数。
其中:
示例
输出如下:
中值定义为将数据样本的上半部分与下半部分分开的值。 函数的用法如下面的程序所示。
示例
输出如下:
算术平均值是沿轴的元素的总和除以元素的数量。 函数返回数组中元素的算术平均值。 如果提供了轴,则沿其计算。
示例
输出如下:
加权平均值是由每个分量乘以反映其重要性的因子得到的平均值。 函数根据在另一个数组中给出的各自的权重计算数组中元素的加权平均值。 该函数可以接受一个轴参数。 如果没有指定轴,则数组会被展开。
考虑数组和相应的权重,通过将相应元素的乘积相加,并将和除以权重的和,来计算加权平均值。
示例
输出如下:
在多维数组中,可以指定用于计算的轴。
示例
输出如下:
标准差是与均值的偏差的平方的平均值的平方根。 标准差公式如下:
如果数组是,则其平均值为。 因此,差的平方是,并且其平均值的平方根除以4,即是。
示例
输出如下:
方差是偏差的平方的平均值,即。 换句话说,标准差是方差的平方根。
示例
输出如下:
NumPy中提供了各种排序相关功能。 这些排序函数实现不同的排序算法,每个排序算法的特征在于执行速度,最坏情况性能,所需的工作空间和算法的稳定性。 下表显示了三种排序算法的比较。
函数返回输入数组的排序副本。 它有以下参数:
其中:
示例
输出如下:
函数对输入数组沿给定轴执行间接排序,并使用指定排序类型返回数据的索引数组。 这个索引数组用于构造排序后的数组。
示例
输出如下:
函数使用键序列执行间接排序。 键可以看作是电子表格中的一列。 该函数返回一个索引数组,使用它可以获得排序数据。 注意,最后一个键恰好是 sort 的主键。
示例
输出如下:
NumPy 模块有一些用于在数组内搜索的函数。 提供了用于找到最大值,最小值以及满足给定条件的元素的函数。
这两个函数分别沿给定轴返回最大和最小元素的索引。
示例
输出如下:
函数返回输入数组中非零元素的索引。
示例
输出如下:
函数返回输入数组中满足给定条件的元素的索引。
示例
输出如下:
函数返回满足任何条件的元素。
输出如下:
我们已经看到,存储在计算机内存中的数据取决于 CPU 使用的架构。 它可以是小端(最小有效位存储在最小地址中)或大端(最小有效字节存储在最大地址中)。
函数在两个表示:大端和小端之间切换。
输出如下:
在执行函数时,其中一些返回输入数组的副本,而另一些返回视图。 当内容物理存储在另一个位置时,称为副本。 另一方面,如果提供了相同内存内容的不同视图,我们将其称为视图。
简单的赋值不会创建数组对象的副本。 相反,它使用原始数组的相同来访问它。 返回 Python 对象的通用标识符,类似于 C 中的指针。
此外,一个数组的任何变化都反映在另一个数组上。 例如,一个数组的形状改变也会改变另一个数组的形状。
示例
输出如下:
NumPy 拥有方法,它是一个新的数组对象,并可查看原始数组的相同数据。 与前一种情况不同,新数组的维数更改不会更改原始数据的维数。
示例
输出如下:
数组的切片也会创建视图:
示例
输出如下:
函数创建一个深层副本。 它是数组及其数据的完整副本,不与原始数组共享。
示例
输出如下:
NumPy 包包含一个 Matrix库。此模块的函数返回矩阵而不是返回对象。
函数返回一个新的矩阵,而不初始化元素。 该函数接受以下参数。
其中:
示例
输出如下:
此函数返回以零填充的矩阵。
输出如下:
此函数返回以一填充的矩阵。
输出如下:
这个函数返回一个矩阵,对角线元素为 1,其他位置为零。 该函数接受以下参数。
其中:
示例
输出如下:
函数返回给定大小的单位矩阵。单位矩阵是主对角线元素都为 1 的方阵。
输出如下:
·numpy.matlib.rand()`函数返回给定大小的填充随机值的矩阵。
示例
输出如下:
注意,矩阵总是二维的,而是一个 n 维数组。 两个对象都是可互换的。
示例
输出如下:
示例
输出如下:
示例
输出如下:
NumPy 包包含模块,提供线性代数所需的所有功能。 此模块中的一些重要功能如下表所述。
此函数返回两个数组的点积。 对于二维向量,其等效于矩阵乘法。 对于一维数组,它是向量的内积。 对于 N 维数组,它是的最后一个轴上的和与的倒数第二个轴的乘积。
输出如下:
要注意点积计算为:
此函数返回两个向量的点积。 如果第一个参数是复数,那么它的共轭复数会用于计算。 如果参数是多维数组,它会被展开。
例子
输出如下:
注意:。
此函数返回一维数组的向量内积。 对于更高的维度,它返回最后一个轴上的和的乘积。
例子
输出如下:
例子
输出如下:
上面的例子中,内积计算如下:
函数返回两个数组的矩阵乘积。 虽然它返回二维数组的正常乘积,但如果任一参数的维数大于2,则将其视为存在于最后两个索引的矩阵的栈,并进行相应广播。
另一方面,如果任一参数是一维数组,则通过在其维度上附加 1 来将其提升为矩阵,并在乘法之后被去除。
例子
输出如下:
例子
输出如下:
例子
输出如下:
行列式在线性代数中是非常有用的值。 它从方阵的对角元素计算。 对于 2×2 矩阵,它是左上和右下元素的乘积与其他两个的乘积的差。
换句话说,对于矩阵,行列式计算为。 较大的方阵被认为是 2×2 矩阵的组合。
函数计算输入矩阵的行列式。
例子
输出如下:
例子
输出如下:
函数给出了矩阵形式的线性方程的解。
考虑以下线性方程:
可以使用矩阵表示为:
如果矩阵成为、和,方程变为:
或
我们使用函数来计算矩阵的逆。 矩阵的逆是这样的,如果它乘以原始矩阵,则得到单位矩阵。
例子
输出如下:
例子
现在让我们在示例中创建一个矩阵A的逆。
输出如下:
结果也可以使用下列函数获取
Matplotlib 是 Python 的绘图库。 它可与 NumPy 一起使用,提供了一种有效的 MatLab 开源替代方案。 它也可以和图形工具包一起使用,如 PyQt 和 wxPython。
Matplotlib 模块最初是由 John D. Hunter 编写的。 自 2012 年以来,Michael Droettboom 是主要开发者。 目前,Matplotlib 1.5.1 是可用的稳定版本。 该软件包可以二进制分发,其源代码形式在 www.matplotlib.org 上提供。
通常,通过添加以下语句将包导入到 Python 脚本中:
这里是 matplotlib 库中最重要的函数,用于绘制 2D 数据。 以下脚本绘制方程:
示例
对象由函数创建为轴上的值。轴上的对应值存储在另一个数组对象中。 这些值使用软件包的子模块的函数绘制。
图形由函数展示。
上面的代码应该产生以下输出:

Matplotlib Demo
作为线性图的替代,可以通过向函数添加格式字符串来显示离散值。 可以使用以下格式化字符。
还定义了以下颜色缩写。
要显示圆来代表点,而不是上面示例中的线,请使用作为函数中的格式字符串。
示例
上面的代码应该产生以下输出:

Color Abbreviation
以下脚本使用 matplotlib 生成正弦波图。
示例

Sine Wave
函数允许你在同一图中绘制不同的东西。 在下面的脚本中,绘制正弦和余弦值。
示例
上面的代码应该产生以下输出:
Sub Plot
子模块提供函数来生成条形图。 以下示例生成两组和数组的条形图。
示例
NumPy 有一个函数,它是数据的频率分布的图形表示。 水平尺寸相等的矩形对应于类间隔,称为,变量对应于频率。
函数将输入数组和作为两个参数。 数组中的连续元素用作每个的边界。
输出如下:
Matplotlib 可以将直方图的数字表示转换为图形。 子模块的函数将包含数据和数组的数组作为参数,并转换为直方图。
输出如下:

Histogram Plot
对象可以保存到磁盘文件并从磁盘文件加载。 可用的 IO 功能有:
- 和函数处理 numPy 二进制文件(带扩展名)
- 和函数处理正常的文本文件
NumPy 为对象引入了一个简单的文件格式。 这个文件在磁盘文件中,存储重建所需的数据、图形、和其他信息,以便正确获取数组,即使该文件在具有不同架构的另一台机器上。
文件将输入数组存储在具有扩展名的磁盘文件中。
为了从重建数组,请使用函数。
输出如下:
和函数接受一个附加的布尔参数。 Python 中的用于在保存到磁盘文件或从磁盘文件读取之前,对对象进行序列化和反序列化。
以简单文本文件格式存储和获取数组数据,是通过和函数完成的。
示例
输出如下:
和数接受附加的可选参数,例如页首,页尾和分隔符。

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容,请联系我们,一经查实,本站将立刻删除。
如需转载请保留出处:https://51itzy.com/kjqy/171647.html