首页  >  文章  >  后端开发  >  如何使用Python使用动态数组执行Numpy广播?

如何使用Python使用动态数组执行Numpy广播?

PHPz
PHPz转载
2023-09-15 09:13:02830浏览

如何使用Python使用动态数组执行Numpy广播?

“广播”是指 NumPy 在算术运算期间如何处理不同维度的数组。较小的数组在较大的数组中“广播”,但受到一定的限制,以确保它们的形状一致。广播允许您进行矢量化数组操作,允许您在 C 而不是 Python 中循环。”

这是在不需要不必要的数据副本的情况下完成的,从而实现了高效的算法实现。在某些情况下,广播是一个消极的想法,因为它会导致内存利用率的浪费,从而减慢计算速度。

在本文中,我们将向您展示如何使用 python 使用 NumPy 数组进行广播。

在给定数据库上执行广播的步骤-

  • 步骤1.创建两个维度兼容的数组

  • 步骤2.打印给定的数组

  • 步骤3.对两个数组进行算术运算

  • 第四步.打印结果数组

添加两个不同维度的备份

使用arange()函数创建一个由0到n-1的数字组成的numpy集群(arange()函数返回给定区间内均匀间隔的值。在半开区间[start,stop]内生成值),将某个分散值加到其中。

示例

雷雷

输出

雷雷

给定的阵列有一个维度(轴),长度为8,而9是一个没有维度的简单整数。由于它们的维度不同,Numpy尝试沿着某个轴广播(只是拉伸)放大的阵列,故适用于数学攻击。

将具有兼容多种的双存储相加

使用 arange() 函数创建两个从 0 到 n-1 的 NumPy 数组,并使用 reshape() 函数重塑它(重塑数组而不影响其数据)。这两个数组具有兼容的维度 (3,4) 和 (3,1),并将两个数组的相应元素相加。

示例

雷雷

输出

雷雷

givenArray_2 沿第二维扩展以匹配givenArray_1 的维度。由于两个数组的尺寸兼容,这才成为可能。

将具有不兼容的多个阵列需求和

创建两个维度不兼容的 NumPy 数组 (6, 4) 和 (6, 1)。当我们尝试添加两个数组的相应元素时,它会引发错误,如下所示。

示例

雷雷

输出

雷雷

行数为6,列数为4。

无法插入大小为 20 的矩阵(需要大小为 6*4 = 24 的矩阵)。

对 Numpy 多维数组和线性数组求和

使用 arange() 函数创建一个多维数组,并使用 reshape() 函数将其重塑为随机数量的行和列。使用 arange() 函数创建另一个线性数组并对这两个数组求和。

示例1

雷雷

输出

雷雷

给定的线性数据库进行扩展,以匹配给定的数据库1(多维数据库)的维度。由于两个数据库的维度是兼容的,这是可能的。

示例2

雷雷

输出

雷雷

理解多个数组可以沿多个维度传播是至关重要的。 Array1 的维度为 (6, 5, 4, 2),而 array2 的维度为 (5, 4, 1)。维度数组是通过沿第三维拉伸 array1 和沿第一维和第二维(6, 5, 4, 2)拉伸 array2 形成的。

结论

Numpy 广播比在磁盘上的循环速度更快。从第一个例子开始。用户可以通过磁盘循环,将相同的数字添加到磁盘上的每个元素,而不是使用广播方法。这种方式很慢,有两个原因:循环需要与Python循环进行交互,这会减慢C实现的速度。相反,NumPy使用步幅是循环。将步幅设置为0您无限循环遍历组件,而不会产生内存开销。

以上是如何使用Python使用动态数组执行Numpy广播?的详细内容。更多信息请关注PHP中文网其他相关文章!

声明:
本文转载于:tutorialspoint.com。如有侵权,请联系admin@php.cn删除