【Python Numpy】广播、数组的迭代

这篇具有很好参考价值的文章主要介绍了【Python Numpy】广播、数组的迭代。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。


前言

在Python的科学计算领域,NumPy是一个强大的工具,它提供了用于操作多维数组的功能。广播(Broadcasting)是NumPy中的一个重要概念,它使得不同形状的数组之间的计算变得非常灵活和便捷。本文将介绍广播是什么,以及如何在NumPy中使用广播来进行数组计算。

在Python的科学计算领域,NumPy是一个非常强大的库,用于处理和操作多维数组。当你需要对数组中的元素执行特定操作时,数组迭代成为一个非常有用的工具。本文将介绍什么是NumPy中的数组迭代,如何使用它以及提供一些示例来说明如何迭代数组。


一、什么是广播

广播是一种NumPy的功能,允许不同形状的数组进行逐元素操作,而不需要它们具有相同的形状。当进行操作时,NumPy会自动调整较小的数组以匹配较大数组的形状,使其具有相同的维度,从而使操作可以进行。这意味着您可以轻松地对不同大小的数组执行运算,而不必手动扩展它们的维度。

通过上面的书面语,我们可以解释成下面的话让大家更好的理解广播的概念:
当你做饭的时候,有时候你会用一个大碗来混合不同的食材。NumPy的广播就有点像这个过程。想象一下,你有两个大小不同的碗,但你想把它们混在一起。广播就像是一种神奇的魔法,可以帮你自动调整这些碗的大小,让它们变得一样大,这样你就能把它们顺利混在一起。
在NumPy里,当你要对不同形状的数组进行操作时,广播就发挥作用了。它能让你像对待形状相同的数组一样,对待形状不同的数组。它会让较小的数组“变身”成大的样子,这样你就能像对待形状相同的数组一样对它们进行计算。
就像烹饪中的调料混合一样,广播让你可以轻松地在不同形状的数组之间进行数学运算,而无需手动调整它们的大小。这样,你就能更快地处理数据,而不必为了让数组大小一样而烦恼。

二、NumPy数组之间的广播计算

广播的规则如下:

如果两个数组的维度不同,将维度较小的数组用1填充,直到两个数组的维度相同。

如果两个数组在某个维度上的大小不同,可以通过扩展大小较小的数组来匹配大小较大的数组,从而使它们在该维度上具有相同的大小。

如果两个数组在某个维度上的大小仍然不匹配,且其中一个维度的大小不等于1,那么广播操作会引发错误。

在广播中,NumPy会复制较小的数组,使其在特定维度上的大小与较大的数组匹配,而不实际分配新的内存。

三、示例代码

3.1 示例1:加法操作

import numpy as np

arr1 = np.array([[1, 2, 3], [4, 5, 6]])
arr2 = np.array([10, 10, 10])
result = arr1 + arr2
print(result)

【Python Numpy】广播、数组的迭代,numpy基础教程,python,numpy,开发语言,华为,鸿蒙系统,1024程序员节,pip

解释:
这里我们有一个形状为(2, 3)的二维数组arr1和一个形状为(3,)的一维数组arr2。当我们尝试对它们进行加法操作时,广播机制会“扩展”arr2,使其有与arr1相同的形状(2, 3)。这样,arr2就变成了[[10, 10, 10], [10, 10, 10]]。然后,这两个数组就可以正常相加了。

3.2 示例2:乘法操作

import numpy as np

arr3 = np.array([[1], [2], [3]])
arr4 = np.array([4, 5, 6])
result = arr3 * arr4
print(result)

【Python Numpy】广播、数组的迭代,numpy基础教程,python,numpy,开发语言,华为,鸿蒙系统,1024程序员节,pip

解释:
在这里,arr3是一个形状为(3, 1)的二维数组,而arr4是一个形状为(3,)的一维数组。当我们进行乘法操作时,广播机制会自动将arr3扩展为(3, 3)形状的数组[[1, 1, 1], [2, 2, 2], [3, 3, 3]],同时将arr4扩展为同样的形状[[4, 5, 6], [4, 5, 6], [4, 5, 6]]。之后,两个数组会逐元素相乘。

3.3 示例3:与标量进行运算

import numpy as np

arr5 = np.array([[1, 2], [3, 4]])
result = arr5 + 100
print(result)

【Python Numpy】广播、数组的迭代,numpy基础教程,python,numpy,开发语言,华为,鸿蒙系统,1024程序员节,pip

解释:
在这个示例中,我们有一个形状为(2, 2)的二维数组arr5。当我们尝试将它与一个标量值(例如100)相加时,广播机制会“扩展”这个标量值,使其具有与arr5相同的形状(2, 2)。换句话说,标量值100会变成一个形状为(2, 2)的数组,其所有元素都是100:[[100, 100], [100, 100]]。然后,这两个数组可以逐元素相加。
广播机制使得

二、数组的迭代

2.1 什么是数组迭代

数组迭代是指遍历数组中的元素,并对每个元素执行一些操作或操作。在NumPy中,你可以使用不同的迭代方法来访问数组的元素,无论是一维数组还是多维数组。

2.2 NumPy数组迭代的使用

NumPy提供了几种用于数组迭代的方法,包括:

使用for循环遍历数组元素。
使用NumPy函数如nditer来迭代数组。
这些方法可以根据你的需求来选择,以便更有效地遍历和操作数组中的数据。

2.3 数组迭代的示例

下面是一些数组迭代的示例:

示例1:使用for循环迭代一维数组

import numpy as np

arr = np.array([1, 2, 3, 4, 5])
for element in arr:
    print(element)

【Python Numpy】广播、数组的迭代,numpy基础教程,python,numpy,开发语言,华为,鸿蒙系统,1024程序员节,pip

这个示例演示了如何使用标准的Python for 循环来迭代一维NumPy数组。首先,你需要导入NumPy库。然后,你创建了一个一维数组arr,包含了整数1到5。接下来,使用for循环迭代数组中的每个元素,将每个元素存储在变量element中,然后打印它。这个循环将遍历数组,打印出每个元素的值。

示例2:使用nditer迭代多维数组

import numpy as np

arr = np.array([[1, 2], [3, 4]])
for element in np.nditer(arr):
    print(element)

【Python Numpy】广播、数组的迭代,numpy基础教程,python,numpy,开发语言,华为,鸿蒙系统,1024程序员节,pip

这个示例演示了如何使用NumPy的nditer函数来迭代多维数组。同样,你需要导入NumPy库并创建一个包含多维数据的数组arr。然后,使用np.nditer(arr)来创建一个迭代器对象,该迭代器将遍历多维数组中的所有元素。在这个示例中,迭代器被存储在element中,然后打印出每个元素的值。这允许你轻松地遍历多维数组中的所有元素,而不需要嵌套多个for循环。

示例3:在多维数组中进行元素操作

import numpy as np

arr = np.array([[1, 2], [3, 4]])
for x in np.nditer(arr, op_flags=['readwrite']):
    x[...] = x * 2
print(arr)

【Python Numpy】广播、数组的迭代,numpy基础教程,python,numpy,开发语言,华为,鸿蒙系统,1024程序员节,pip

这个示例演示了如何使用nditer函数来迭代多维数组,并且允许你在迭代的同时修改数组元素。首先,你导入NumPy库并创建一个包含多维数据的数组arr。然后,使用np.nditer(arr, op_flags=[‘readwrite’])来创建一个迭代器对象,允许你对数组元素进行读写操作。在循环中,x代表迭代器中的当前元素,通过x[…]可以对该元素进行修改,这里将元素的值翻倍。最后,打印出修改后的数组arr,你会看到数组中的所有元素都已翻倍。

这些示例演示了不同方式来迭代NumPy数组,从简单的一维数组遍历到多维数组的元素操作,展示了NumPy在数组处理和操作方面的强大功能。


总结

广播是NumPy中的一个强大功能,它允许我们在不同形状的数组之间进行逐元素操作,从而简化了数组计算的复杂性。通过了解广播的规则和使用示例,您可以更好地利用NumPy来处理和分析数据,提高代码的可读性和效率。在处理多维数组时,广播是一个非常有用的工具,使您能够轻松地执行各种操作,而无需手动调整数组的形状。

在NumPy中,数组迭代是一种强大的工具,用于遍历数组并对其中的元素执行各种操作。你可以使用for循环或nditer函数来实现数组的迭代。这对于数据处理、操作和分析非常有用。无论是一维数组还是多维数组,数组迭代都可以帮助你更好地利用NumPy来处理数据。希望本文中的示例和解释能帮助你更好地理解和使用NumPy中的数组迭代。文章来源地址https://www.toymoban.com/news/detail-741251.html

到了这里,关于【Python Numpy】广播、数组的迭代的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 【Python 零基础入门】Numpy 常用函数 数组操作 & 数学运算

    Numpy (Numerical Python) 是 Python 编程语言的一个扩展程序库, 支持大量的维度数组与矩阵运算, 并提供了大量的数学函数库. Numpy 利用了多线程数组来存储和处理大型数据集, 从而提供了一个高效的方式来进行数值计算, 特别是对于矩阵预算和线性代数. np.assarray 可以将输入转换为

    2024年02月05日
    浏览(38)
  • 【numpy基础】--广播计算

    numpy 的广播计算是指在多维数组上进行的一种高效计算方式。 它可以将计算任务分配到每个维度上,并且可以在计算过程中进行数据共享和同步,从而提高计算效率和精度。 广播计算在数值计算、科学计算、机器学习等领域都有广泛的应用。 例如,在数值计算中,广播计算

    2024年02月11日
    浏览(31)
  • Python numpy - 数组的创建与访问

    目录 一 数组array的创建途径 1  列表list  2 函数array  3 函数arange 4 函数zeros 5 函数eyes 6 随机函数randn/ randint 二 数组array的访问  1 访问形状/元素个数/数据类型  2 访问一维数组的位置/范围 3 访问二维数组的位置/范围 4 用:访问二维数组的切片 生成数组的常用途径 list列表

    2024年02月07日
    浏览(36)
  • Python numpy - 数组与矩阵的运算

    目录  数组array 一 数组的函数 unique函数  sum函数  max函数 二 数组的加减 三 数组的乘除  矩阵matrix 一 矩阵的生成 二 矩阵的加减 三  矩阵的乘法 创建数组a和b用来运算(至少两个) 数组常用函数 函数 作用 unique() 求数组里的唯一值,输出从小到大排列 sum() 对数组整

    2024年02月11日
    浏览(33)
  • 【Python入门第四十六天】Python丨NumPy 数组重塑

    重塑意味着更改数组的形状。 数组的形状是每个维中元素的数量。 通过重塑,我们可以添加或删除维度或更改每个维度中的元素数量。 实例 将以下具有 12 个元素的 1-D 数组转换为 2-D 数组。 最外面的维度将有 4 个数组,每个数组包含 3 个元素: 运行实例 从 1-D 重塑为 3-D

    2023年04月08日
    浏览(36)
  • 【Python入门知识】NumPy 数组搜索,案例+理论讲解

    前言 嗨喽~大家好呀,这里是魔王呐 ❤ ~! 搜索数组 可以在数组中搜索(检索)某个值,然后返回获得匹配的索引。 要搜索数组,请使用 where() 方法。 实例 查找值为 4 的索引: 运行实例 更多python资料、源码、教程: 点击此处跳转文末名片获取 上例会返回一个元组:(array([

    2024年02月03日
    浏览(34)
  • python实战应用讲解-【numpy数组篇】常用函数(八)(附python示例代码)

    目录 Python Numpy MaskedArray.cumprod()函数 Python Numpy MaskedArray.cumsum()函数 Python Numpy MaskedArray.default_fill_value()函数 Python Numpy MaskedArray.flatten()函数 Python Numpy MaskedArray.masked_equal()函数 numpy.MaskedArray.cumprod() 返回在给定轴上被屏蔽的数组元素的累积乘积。在计算过程中,被屏蔽的值在内部

    2024年02月02日
    浏览(40)
  • 【Python爬虫与数据分析】NumPy进阶——数组操作与运算

    目录 一、NumPy数组操作 1. ndarray更改形状 2. ndarray转置 3. ndarray组合 4. ndarray拆分 5. ndarray排序 二、NumPy数组运算 1. 基本运算 2. 逻辑函数 3. 数学函数 三、日期时间的表示和间隔 1. 日期时间的表示——datetime64 2. 日期时间的计算——timedelta64 3. datetime64与datetime的转换 在对数组进

    2024年02月15日
    浏览(30)
  • 【Python爬虫与数据分析】NumPy初阶——数组创建与访问

    目录 一、NumPy概述 二、NumPy数据类型 三、创建数组 1. numpy.array函数创建数组 2. np.arange创建数组 3. numpy.random.rand创建数组 4. numpy.random.randint创建数组 5. NumPy创建特殊数组 四、数组的属性 五、NumPy数组索引与切片 NumPy(Numerical Python的简称)是一个开源的Python科学计算库,用于对

    2024年02月13日
    浏览(37)
  • python实战应用讲解-【numpy数组篇】实用小技巧(八)(附python示例代码)

    目录   如何在NumPy数组上映射一个函数 方法一:numpy.vectorize()方法 方法2:使用lambda函数 方法3:用一个数组作为函数的参数来映射一个NumPy数组 如何使用给定的索引位置重新排列二维NumPy数组的列 如何用NumPy删除只包含0的数组行 如何删除Numpy数组中包含非数字值的列

    2024年02月01日
    浏览(36)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包