在本教程中,我将解释如何使用Numpy divide函数--又称np.divide--将一个Numpy数组的值除以另一个。
我将解释np.divide的语法,该函数如何工作,以及如何使用它。
如果你需要特定的东西,你可以点击以下任何一个链接。
目录:
好的。 让我们开始吧。
Numpy Divide的快速介绍
Numpy divide函数--正如你可能已经猜到的那样--_用于分割_Numpy数组。
使用这个函数的最重要的方式是分割两个相同大小的数组。当你分割两个相同大小的数组时,np.divide将对数组的值进行元素分割。 这有时被称为 "Hadamard除法",因为它类似于Hadamard乘积,在Numpy中由Numpy multiply函数执行。
你也可以用这个函数将一个Numpy数组除以一个标量值(即用一个矩阵除以一个标量)。
而且你可以用它来将一个Numpy数组除以一个一维数组(或更小的数组)。 这类似于线性代数中的矩阵除以矢量。 这在Numpy中的实现方式是使用一种叫做 "广播 "的技术。
在大多数情况下,这种技术是相当容易理解的,我将在例子部分向你展示使用它的各种方法。
但首先,让我们看一下语法。
np.divide的语法
Numpy divide函数的语法相当简单。
请记住,上面的语法是假设你已经用别名np
,导入了Numpy。
输入数组的格式
在我继续之前,我想对两个输入数组做一些评论。
注意在上面的语法解释中,np.divide函数有两个输入参数。 在图片中,我将这些参数命名为arr1
和arr1
。 通常情况下,这些输入将是Numpy数组或类似数组的对象,如Python列表。
此外,对输入数组的_形状_也有一些限制。 函数的操作方式将由输入的形状决定。
使用 np.divide 的第一种方式是使用两个相同大小的数组(即行数和列数完全相同的数组)。 如果两个输入数组具有相同的形状,那么Numpy divide将以元素的方式将第一个数组的元素除以第二个数组的元素。
另外,你也可以提供具有不同形状的输入数组。 但在这种情况下,第二个数组需要有一个适当的大小,以便它能在第一个数组中被广播。 我将在例子部分向你展示一个广播的例子。
附加参数
除了两个输入参数外,Numpy divide函数还有一些可选参数。
- out
- 其中
这些参数有点少用,但因此我不会在这里解释它们。
np.divide的输出
np.divide的输出是一个新的Numpy数组,包含了输入数组值的元素除法。 注意,np.divide执行的是_真_除法,而不是地板除法。
此外,对于标量有一个特殊情况。 如果np.divide的两个输入都是标量值,那么输出将是一个标量。
示例:如何用Numpy数组进行除法运算
现在我们已经看了Numpy divide的语法,让我们看看一些例子。
例子。
初步代码。导入Numpy并创建数组
在你运行这些例子之前,你需要运行一些代码来导入Numpy并创建一些我们可以使用的样本数组。
导入Numpy
首先,让我们直接导入Numpy。
你可以通过以下代码导入Numpy。
import numpy as np
创建数组
接下来,让我们创建一些数组,我们可以在我们的例子中使用。
实际上我们将创建几种不同类型的数组。
- 一个一维的数字 "向量"。
- 一个由1到9的数字组成的二维 "矩阵"(有序)。
- 一个由1到9的数字组成的二维 "矩阵"(随机)。
为了做到这一点,我们将使用几个Numpy工具,如Numpy数组函数、Numpy arange函数、Numpy reshape和Numpy随机选择。
我们将使用Numpy array来创建一个有三个值的一维数组。 我们将使用Numpy arange来创建一个有一串数字的数组。 我们将使用Numpy reshape来创建一个有序的二维数组,该数组由一维数字序列创建。 我们将使用Numpy random choice来创建一个随机的二维数组,该数组由一维序列创建。
如果你对这些操作中的任何一个感到困惑,请点击上面的链接。 相关的教程将更详细地解释一切。
# CREATE 1D 'VECTOR'
vector_1d = np.array([10,20,30])
# 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.divide(12,4)
OUT。
3.0
解释
这是很简单的。
这里,我们只是用12除以4,结果是3.0。
实例2:用一个数组除以一个标量
接下来,我们将用一个二维Numpy数组除以一个标量值。
np.divide(matrix_2d_ordered, 2)
输出。
array([[0.5, 1. , 1.5],
[2. , 2.5, 3. ],
[3.5, 4. , 4.5]])
解释
在这里,我们用标量值2除以matrix_2d_ordered
的每个值。
输出的结果是matrix_2d_ordered
的每个值除以2。
实例3:除以两个相同大小的Numpy数组
接下来,让我们对两个同样大小的数组进行操作。
具体来说,我们将用matrix_2d_ordered
除以matrix_2d_random
。
np.divide(matrix_2d_ordered, matrix_2d_random)
输出。
array([[0.11111111, 1. , 0.75 ],
[1.33333333, 0.71428571, 6. ],
[0.875 , 1.6 , 1.5 ]])
解释
在这里,Numpy的除法函数正在用matrix_2d_ordered
中的每个值除以matrix_2d_random
中的相应值。
另一种说法是它在对数组值进行元素除法(即Hadamard除法)。
注意,输出数组与输入数组的大小相同。
例子4:矩阵除以矢量(即广播)
最后,让我们把一个二维数组除以一个一维数组。
np.divide(matrix_2d_ordered, vector_1d)
输出。
array([[0.1 , 0.1 , 0.1 ],
[0.4 , 0.25, 0.2 ],
[0.7 , 0.4 , 0.3 ]])
解释
在这个例子中,我们将matrix_2d_ordered
除以vector_1d
。
当我们这样做时,Numpy在执行除法时将一维数组 "广播 "到二维数组中(例如,它将vector_1d
广播到matrix_2d_ordered
)。
所以这个函数将第1行matrix_2d_ordered
的值除以vector_1d
,按元素排列。然后它将第2行matrix_2d_ordered
的值除以vector_1d
。 以此类推。
注意,这是可能的,因为vector_1d
中的元素数与matrix_2d_ordered
中每一行的元素数相同。 为了使广播像这样工作,数组的大小需要使第二个数组可以在第一个数组上广播。
在下面的评论中留下你的其他问题
你对如何在Numpy数组上使用Numpy除法还有其他问题吗?
如果有,请在下面的评论区留下你的问题。
加入我们的课程,学习更多关于Numpy的知识
在本教程中,我已经解释了如何用np.divide对Numpy数组进行除法。
这应该对你的数组除法有所帮助,但如果你真的想学习Numpy,还有很多东西要学。
如果你真的想掌握Numpy,并认真对待Python中的数据科学,你应该考虑加入我们的高级课程,称为_Numpy Mastery_。
Numpy Mastery将教会你关于Numpy的所有知识,包括。
- 如何创建Numpy数组
- 如何重塑、分割和组合你的Numpy数组
- Numpy随机种子 "函数的作用是什么?
- 如何使用Numpy的随机函数
- 如何对Numpy数组进行数学运算
- 以及更多...
此外,本课程将向你展示一个练习系统,它将帮助你在几周内_掌握_语法。 我们将向你展示一个练习系统,使你能够记住所有你学到的Numpy语法。 如果你在记忆Numpy语法上有困难,这就是你一直在寻找的课程。
在这里了解更多。
**
**