如何使用Numpy的减法函数

1,276 阅读9分钟

在本教程中,我将解释如何使用Numpy减法函数--又称np.subtract--来对Numpy数组和其他Python对象进行数学减法。

我将解释np.subtract的语法,该函数如何工作,以及如何使用它。

如果你需要特定的东西,你可以点击以下任何一个链接。

目录:

让我们先快速了解一下该函数的作用。

Numpy减法的快速介绍

正如你所期望的,Numpy subtract函数对Numpy数组和其他Python对象进行减法

也许这个函数最重要的用途是减去两个相同大小的Numpy数组的值。 当你在两个同样大小的Numpy数组上使用np.subtract时,该函数将从第一个数组的元素中减去第二个数组的元素。 它是以 "从元素出发 "的方式进行减法的。

A simple visual example showing how Numpy subtract performs element-wise subtraction of the values of two same-sized input arrays.

除了用于两个相同大小的数组外,你还可以在其他一些方面使用Numpy减法。

首先,你可以使用np.subtract对两个标量值进行操作。 在这种情况下,它将简单地执行减法。

你也可以在Python列表上使用np.subtract。 当你这样做时,在大多数情况下,np.subtract 将把列表当作 Numpy 数组来处理 (并执行适用于 Numpy 数组的关于大小和形状的相同规则)。 当你对列表进行操作时,输出将是一个Numpy数组。

最后,你可以对一个多维数组和一个低维数组使用Numpy减法函数。 例如,你可以在一个二维数组和一个一维数组上使用np.subtract。 当你这样做时,Numpy将在高维数组的片断上 "广播 "低维数组。 重要的是,这两个数组需要有适当的大小,以使广播成为可能(例如,它们需要相同数量的列)。 如果你是Numpy的新手,广播可能会感到困惑,所以我将在例子部分给你看一个例子。

不过在看例子之前,我们先看一下语法。

np.subtract的语法

Numpy减法函数的语法很简单。

An image that shows the syntax for the np.subtract function.

注意,上面显示的语法是假设你已经使用别名np 来导入Numpy。

输入数组的格式

尽管上面的语法相当简单,但对于输入数组,有几件重要的事情需要记住。

输入的数据类型

首先让我们来谈谈数据类型。

正如你在上面的语法解释中看到的,有两个输入。 由于我们讨论的是Numpy,这些输入通常是Numpy数组。 np.subtract主要是为了对数组进行操作。

尽管如此,np.subtract 也会对其他类型的 Python 对象进行操作。 具体来说,它将对类似列表的对象进行操作,比如列表和图元。

输入的 "形状"

其次,让我们谈谈输入数组的形状。(这很重要,因为函数的运行方式取决于两个输入的形状)。

使用np.subtract的第一个也是最重要的方法是使用两个相同大小的数组。 我指的是具有相同行数和列数的数组。 当你对两个相同大小的数组使用Numpy subtract时,它将对输入数组的值进行逐元减法。

An image that shows element-wise subtraction of two same-sized Numpy arrays.

除了对相同大小的数组进行操作外,Numpy subtract也会对不同大小的数组进行操作。 例如,你可以对一个一维数组和一个二维数组进行操作。 如果你像这样使用np.subtract,那么它将执行广播。 它将重复地从大数组的片断中减去小数组。 为了使其正常工作,较小的数组需要有一个适当的形状,例如,元素的数量与大数组切片中的元素数量一致。

广播有时对初学者来说是很难掌握的,所以我将在例4中向你展示一个例子。

额外的参数

除了两个输入数组外,np.subtract还有一些可选参数。

  • out
  • 其中

这些参数有点少用,但因此我不会在这里解释它们。

np.subtract的输出

np.subtract的输出是一个新的Numpy数组,它包含了输入数组值的元素之差。

此外,注意对于标量有一个特殊情况:如果np.subtract的两个输入都是标量,那么输出将是一个标量。

如何对Numpy数组的值进行减法的例子

现在我们已经看完了语法,让我们看看如何在Numpy数组中减去数值的几个例子。

例子。

初步代码。导入Numpy并创建数组

在你运行这些例子之前,你需要运行一些代码。

具体来说,你需要导入Numpy并创建一些我们可以操作的数组。

导入Numpy

首先,我们来导入Numpy。

你可以用这段代码导入Numpy。

import numpy as np

创建数组

接下来,我们将创建一些Numpy数组,我们将能够使用np. subtract。

具体来说,我们将创建。

  • 一个一维的数字 "向量"。
  • 一个由1到9的数字组成的二维 "矩阵"(有序)
  • 一个由1到9的数字组成的二维 "矩阵"(随机)。

我们将使用一些Numpy函数来做这些。

我们将使用np.array函数来创建一个一维的数值向量

我们将使用np.range来创建一个数组,其中有一串从1到9的数字。 这将被称为numbers_1_to_9 。 为了清楚起见,我们不会直接使用这个数组。 我们只会用它来创建一些其他的数组。

numbers_1_to_9 ,我们将创建两个额外的数组: matrix_2d_orderedmatrix_2d_random 。 这些数组将是1到9的数字,按顺序排列在一个3乘3的矩阵中,以及1到9的数字,随机排列在一个3乘3的矩阵中

# CREATE 1D 'VECTOR'
vector_1d = np.array([3,4,5])

# CREATE 2D MATRIX OF NUMBERS, 1 TO 9
numbers_1_to_9 = np.arange(start = 1, stop = 10)
matrix_2d_ordered = numbers_1_to_9.reshape((3,3))

# CREATE 2D MATRIX OF NUMBERS, 1 TO 9, RANDOMIZED
np.random.seed(22)
matrix_2d_random = np.random.choice(size = (3,3), a = numbers_1_to_9, replace = False)

如果我们在这里做的事情让你感到困惑,那么你应该点击我刚才提到的链接,阅读我在前面几段中链接的教程。 那些教程解释了我们用来创建这些数组的技术。

在你运行了创建数组的代码之后,你就可以准备运行这些例子了。

例子1:使用Numpy将一个标量从另一个标量中减去

让我们从一个非常简单的例子开始。

在这里,我们将使用Numpy的减法函数将一个标量值从另一个标量值中减去。

np.subtract(12,4)

OUT。

8

解释

这是一个非常简单的例子

在这里,我们要从12的值中减去4的值。 结果是8。

实例2:从数组中减去一个标量值

接下来,让我们从一个数组中减去一个标量值。

具体来说,我们将从matrix_2d_ordered 中减去数值3。

np.subtract(matrix_2d_ordered, 3)

输出。

array([[-2, -1,  0],
       [ 1,  2,  3],
       [ 4,  5,  6]])

解释

在这里,我们用一个标量和一个Numpy数组来使用np.subtract。

在输出中,np.subtract从数组的每个元素中减去了3,matrix_2d_ordered

输出是一个新的数组,包含新的元素。

另外,注意输出与输入数组的形状相同,matrix_2d_ordered

实例3:减去两个相同大小的Numpy数组

在这个例子中,让我们对两个相同大小的数组进行操作。

具体来说,我们将从matrix_2d_ordered 中减去matrix_2d_random

np.subtract(matrix_2d_ordered, matrix_2d_random)

输出。

array([[-8,  0, -1],
       [ 1, -2,  5],
       [-1,  3,  3]])

解释

在这个例子中,np.subtract函数将matrix_2d_random 的值从matrix_2d_ordered 的相应值中减去,是以元素的方式进行的。

An image showing np.subtract performing subtraction on two same-sized Numpy arrays, in an element-wise fashion.

另外,看一下输出的形状。 输出数组与输入数组的形状相同。 这就是当我们使用两个相同大小的输入时,np.subtract是如何工作的。

例子4:从矩阵中减去一个向量(即广播)

最后,让我们对一个一维数组和一个二维数组进行操作。

matrix_2d_ordered具体来说,我们将使用 np.tongract 来从二维数组的每一行中减去一维数组vector_1d

np.subtract(matrix_2d_ordered, vector_1d)

输出。

array([[-4, -2,  0],
       [-1,  1,  3],
       [ 2,  4,  6]])

解释

在这个例子中,我们将一维数组vector_1d 从二维数组matrix_2d_ordered 中减去。

注意一维数组和二维数组都有相同的列数。 这使得Numpy可以从matrix_2d_ordered 的每一行中减去vector_1d 的元素。

在Numpy中,我们称之为 "广播"。这里,np.subtract在二维数组的各行中 "广播 "一维数组。

所以在这里,np.subtract从matrix_2d_ordered 的第1行减去vector_1d 的值,按元素排列。然后它将vector_1d 的值减去matrix_2d_ordered 的第2行。以此类推。

<img src="www.sharpsightlabs.com/wp-content/…" alt="一张显示Numpy如何从二维数组的行中减去一维数组的值的图片,我们称之为'广播'。" width="546' class="aligncenter size-full wp-image-6559" srcset="vrzkj25a871bpq7t1ugcgmn9-wpengine.netdna-ssl.com/wp-content/… 1092w, vrzkj25a871bpq7t1ugcgmn9-wpengine.netdna-ssl.com/wp-content/… 600w, vrzkj25a871bpq7t1ugcgmn9-wpengine.netdna-ssl.com/wp-content/… 1024w, vrzkj25a871bpq7t1ugcgmn9-wpengine.netdna-ssl.com/wp-content/… 768w, https://vrzkj25a871bpq7t1ugcgmn9-wpengi 为了使广播正常工作,两个输入数组中的列数需要有适当的大小。

在下面的评论中留下你的其他问题

你对如何使用np.subtract在Numpy中执行减法还有其他问题吗?

如果有,在下面的评论部分留下你的问题。

加入我们的课程,学习更多关于Numpy的知识

在本教程中,我解释了如何用np.subtract对Numpy数组进行减法。

这应该有助于你执行矩阵减法,但是如果你真的想学习Numpy,还有很多东西需要学习。

如果你真的想掌握Numpy,并认真对待Python中的数据科学,你应该考虑加入我们的高级课程,称为Numpy Mastery

Numpy Mastery将教授您关于Numpy的所有知识,包括。

  • 如何创建Numpy数组
  • 如何重塑、拆分和合并Numpy数组
  • "Numpy随机种子 "是什么?函数的作用
  • 如何使用Numpy随机函数
  • 如何对Numpy数组进行数学运算
  • 以及更多...

此外,本课程将向您展示一个练习系统,帮助您在几周内掌握该语法。 我们将向你展示一个练习系统,使你能够记住所有你学到的Numpy语法。 如果你在记忆Numpy语法方面有困难,这就是你一直在寻找的课程。

在这里了解更多:

了解关于Numpy掌握的更多信息

<