【数据分析之道-NumPy(五)】numpy迭代数组

文章介绍了如何使用Python的循环语句和NumPy的nditer函数来迭代数组,包括一维、二维数组的迭代,以及指定顺序和在迭代时修改元素的操作。此外,还提到了flat属性、ndenumerate函数和布尔索引作为迭代数组的不同方法。
部署运行你感兴趣的模型镜像

在这里插入图片描述

专栏导读

✍ 作者简介:i阿极,优快云 Python领域新星创作者,专注于分享python领域知识。

本文录入于《数据分析之道》,本专栏针对大学生、初级数据分析工程师精心打造,对python基础知识点逐一击破,不断学习,提升自我。
订阅后,可以阅读《数据分析之道》中全部文章内容,包含python基础语法、数据结构和文件操作,科学计算,实现文件内容操作,实现数据可视化等等。
✍ 其他专栏:《机器学习案例》

1、前言

迭代数组指的是遍历数组中所有元素的过程。在 Python 中,可以使用循环语句来迭代数组中的每个元素,并对其进行操作。在 NumPy 中,也可以使用 nditer 函数来实现对数组的迭代,该函数返回一个可迭代对象,可以在循环中用于遍历数组中的元素。

2、使用python循环语句

最简单的方法是使用 Python 中的 for 循环语句来迭代数组中的元素。对于多维数组,可以使用嵌套循环来遍历每个元素。

下面是一个示例代码:

import numpy as np

a = np.array([1, 2, 3])

for x in a:
    print(x)
    
b = np.array([[1, 2], [3, 4]])

for row in b:
    for x in row:
        print(x)

在这里插入图片描述

3、使用nditer函数

nditer 函数是 NumPy 提供的一种遍历数组的方法。它返回一个可迭代对象,可以在循环中用于遍历数组中的元素。可以通过 order 参数指定遍历的顺序,或者使用 C 或 F 属性来查看数组的存储方式。

3.1迭代一维数组

import numpy as np

a = np.array([1, 2, 3, 4, 5])
for x in np.nditer(a):
    print(x)

我们创建了一个一维数组 a,并使用 nditer 函数对其进行迭代。在循环中,每次迭代返回数组中的一个元素,并打印出来。

在这里插入图片描述

3.2迭代二维数组

import numpy as np

a = np.array([[1, 2], [3, 4], [5, 6]])
for x in np.nditer(a):
    print(x)

我们创建了一个二维数组 a,并使用 nditer 函数对其进行迭代。在循环中,每次迭代返回数组中的一个元素,并打印出来。注意,元素的迭代顺序是按照行优先顺序进行的。

在这里插入图片描述

3.3迭代指定顺序的数组

import numpy as np

a = np.array([[1, 2], [3, 4], [5, 6]])
for x in np.nditer(a, order='F'):
    print(x)

我们使用 nditer 函数迭代二维数组 a,但是指定了顺序为列优先顺序。在循环中,每次迭代返回数组中的一个元素,并打印出来。注意,指定顺序会影响元素的迭代顺序。

在这里插入图片描述

3.4迭代时修改数组中的元素

import numpy as np

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

我们创建了一个一维数组 a,并使用 nditer 函数对其进行迭代。在循环中,我们将 op_flags 参数设置为 [‘readwrite’],表示可以读取和写入数组中的元素。每次迭代返回数组中的一个元素,并将其乘以2。最后,打印修改后的数组 a。
需要注意的是,迭代时修改数组中的元素可能会导致意外的结果,因此应该谨慎使用。

在这里插入图片描述

4、使用flat属性

flat 属性返回一个可迭代对象,可以用于遍历数组中的每个元素。与 nditer 函数类似,flat 属性也是按照 C 风格的顺序(行优先)遍历数组的。

下面是一个使用 flat 属性遍历数组的示例代码:

import numpy as np

a = np.array([[1, 2], [3, 4]])

for x in a.flat:
    print(x)

在这里插入图片描述

5、使用ndenumerate函数

ndenumerate 函数返回一个可迭代对象,可以用于遍历数组中的每个元素,并返回元素的索引和值。

下面是一个示例代码:

import numpy as np

a = np.array([[1, 2], [3, 4]])

for index, x in np.ndenumerate(a):
    print(index, x)

在这里插入图片描述

6、使用布尔索引

另一种迭代数组的方法是使用布尔索引,即使用一个布尔数组来指定要访问的元素的位置。

下面是一个示例代码:

import numpy as np

a = np.array([1, 2, 3, 4, 5])
b = a > 2

for x in a[b]:
    print(x)

在这里插入图片描述


总结

在迭代时不要修改数组中的元素,否则可能会导致意外的结果。如果需要修改数组中的元素,建议先复制一份数组,并在复制品上进行操作。

📢文章下方有交流学习区!一起学习进步!💪💪💪
📢首发优快云博客,创作不易,如果觉得文章不错,可以点赞👍收藏📁评论📒
📢你的支持和鼓励是我创作的动力❗❗❗

您可能感兴趣的与本文相关的镜像

Python3.10

Python3.10

Conda
Python

Python 是一种高级、解释型、通用的编程语言,以其简洁易读的语法而闻名,适用于广泛的应用,包括Web开发、数据分析、人工智能和自动化脚本

评论 16
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

i阿极

你的鼓励是我创作最大的动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值