如何使用Numpy除法函数

2,490 阅读7分钟

在本教程中,我将解释如何使用Numpy divide函数--又称np.divide--将一个Numpy数组的值除以另一个。

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

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

目录:

好的。 让我们开始吧。

Numpy Divide的快速介绍

Numpy divide函数--正如你可能已经猜到的那样--_用于分割_Numpy数组。

使用这个函数的最重要的方式是分割两个相同大小的数组。当你分割两个相同大小的数组时,np.divide将对数组的值进行元素分割。 这有时被称为 "Hadamard除法",因为它类似于Hadamard乘积,在Numpy中由Numpy multiply函数执行。

A simple visual example that shows how the Numpy divide function computes the element-wise division of the input values (i.e., Hadamard division).

你也可以用这个函数将一个Numpy数组除以一个标量值(即用一个矩阵除以一个标量)。

而且你可以用它来将一个Numpy数组除以一个一维数组(或更小的数组)。 这类似于线性代数中的矩阵除以矢量。 这在Numpy中的实现方式是使用一种叫做 "广播 "的技术。

在大多数情况下,这种技术是相当容易理解的,我将在例子部分向你展示使用它的各种方法。

但首先,让我们看一下语法。

np.divide的语法

Numpy divide函数的语法相当简单。

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

请记住,上面的语法是假设你已经用别名np ,导入了Numpy。

输入数组的格式

在我继续之前,我想对两个输入数组做一些评论。

注意在上面的语法解释中,np.divide函数有两个输入参数。 在图片中,我将这些参数命名为arr1arr1 。 通常情况下,这些输入将是Numpy数组或类似数组的对象,如Python列表。

此外,对输入数组的_形状_也有一些限制。 函数的操作方式将由输入的形状决定。

使用 np.divide 的第一种方式是使用两个相同大小的数组(即行数和列数完全相同的数组)。 如果两个输入数组具有相同的形状,那么Numpy divide将以元素的方式将第一个数组的元素除以第二个数组的元素。

An image showing how Numpy divide divides the elements of the first array by the elements of the second array, in an element-wise fashion.

另外,你也可以提供具有不同形状的输入数组。 但在这种情况下,第二个数组需要有一个适当的大小,以便它能在第一个数组中被广播。 我将在例子部分向你展示一个广播的例子。

附加参数

除了两个输入参数外,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除法)。

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

注意,输出数组与输入数组的大小相同。

例子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 。 以此类推。

An image that shows dividing a 2D Numpy array by a 1D Numpy array (i.e., array broadcasting).

注意,这是可能的,因为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语法上有困难,这就是你一直在寻找的课程。

在这里了解更多。

**

了解更多关于Numpy Mastery的信息

**