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

news2024/11/24 14:46:28

在这里插入图片描述

文章目录

  • 专栏导读
  • 1、前言
  • 2、使用python循环语句
  • 3、使用nditer函数
    • 3.1迭代一维数组
    • 3.2迭代二维数组
    • 3.3迭代指定顺序的数组
    • 3.4迭代时修改数组中的元素
  • 4、使用flat属性
  • 5、使用ndenumerate函数
  • 6、使用布尔索引
  • 总结

专栏导读

✍ 作者简介:i阿极,CSDN 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)

在这里插入图片描述


总结

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

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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/440365.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

IO多路复用—多线程网络并发通信 select poll epoll

1.IO 多路转接 (复用) ​ IO 多路转接也称为 IO 多路复用,它是一种网络通信的手段(机制),通过这种方式可以同时监测多个文件描述符并且这个过程是阻塞的,一旦检测到有文件描述符就绪( 可以读数据或者可以写…

Nginx企业级使用1(运维笔记)

Nginx企业级使用1(运维笔记) 重装和升级 信号参数 Kill 选项参数 pid ##关闭nginx ##快速关闭 kill -INT pid ##优雅关闭 kill -QUIT pid##############实操############## [rootserver01 ~]# ps -ef|grep nginx root 1668 1 0 11:09 ?…

Flask入门和视图--01

1. 概述 虚拟环境搭建和使用 Flask框架的特点,Flask框架的组成 Flask框架中MVT模式开发 蓝图Blueprint的使用 路由Route的使用 请求Request和响应Response的使用 2. Flask简介 2.1 简介 Python后端的2个主流框架:Flask 轻量级框架Django 重型框架Flask是一…

开心档之C++ 信号处理

C 信号处理 目录 C 信号处理 signal() 函数 实例 raise() 函数 实例 信号是由操作系统传给进程的中断,会提早终止一个程序。在 UNIX、LINUX、Mac OS X 或 Windows 系统上,可以通过按 CtrlC 产生中断。 有些信号不能被程序捕获,但是下表…

安全狗入选2023年福建省数字经济核心产业领域创新企业名单

近日,福建省数字福建建设领导小组办公室公布了入选2023年全省数字经济核心产业领域创新企业名单。 作为国内云原生安全领导厂商,安全狗凭借综合表现与优势入选名单,荣膺“未来独角兽”称号。 据悉,此次对“未来独角兽”的评选条件…

调频电视发射机工作原理

我们平常所接触到的电视信号无线传输器材,较多采用调幅方式。原因是调幅方式在整个电视技术领域用得比较普遍,如我们生活中不可或缺的无线和有线电视广播,几乎全部都采用调幅方式。其实,若是用调频方式来传输电视信号,…

Qt Quick - 分隔器综述

Qt Quick - 分隔器综述 一、概述二、MenuSeparator 控件1. 用法: 三、ToolSeparator 控件1. 用法 一、概述 Qt Quick Controls 提供了多种分隔符,其实就是分割一下MenuBar和ToolBar里面的内容。 控件功能MenuSeparator将菜单中的一组项目与相邻项目分开…

Spring Boot + Spring Security基础入门教程

Spring Security简介 Spring Security 是一个功能强大且高度可定制的身份验证和访问控制框架。Spring Security 致力于为 Java 应用程序提供身份验证和授权的能力。 Spring Security 两大重要核心功能:用户认证(Authentication)和用户授权&am…

pandas 使用loc和iloc读取行数据或列数据

文章目录 一、 使用loc方法读取数据1.1 读取某行某列的值1.2 读取某个区域1.3 按照条件筛选 二. 使用iloc方法读取数据2.1 读取某行某列的值2.2 读取某个区域的数据 创建一个DataFrame data {name:[张三, 李四, 王五, 赵六],age:[20, 21, 22, 23], gender: [0, 1, 1, 1], stat…

网络工程项目报价单应该怎么写?记住这6个步骤准没错!

作为一名网络工程师,你在向潜在客户提供服务时,编写一个清晰明了的项目报价单是至关重要的。一个好的报价单不仅能够让客户更好地了解你的服务内容,还可以为你的项目提供更高的转化率。在本文中,我们将探讨如何编写一个有效的网络…

一图看懂 xlwt 模块:读写 Excel 文件的数据和格式信息, 资料整理+笔记(大全)

本文由 大侠(AhcaoZhu)原创,转载请声明。 链接: https://blog.csdn.net/Ahcao2008 一图看懂 xlwt 模块:读写 Excel 文件的数据和格式信息, 资料整理笔记(大全) 摘要模块图类关系图模块全展开【xlwt】统计常量模块1 xlwt.compat2 x…

Linux系统之部署Linux管理面板1Panel

Linux系统之部署Linux管理面板1Panel 一、1Panel介绍1.1Panel简介2.1Panel特点 二、本地环境规划1.本此实践目的2.本地环境规划 三、检查本地环境1.检查操作系统版本2.检查系统内核版本 四、部署1Panel1.创建安装目录2.一键部署1Panel3.检查1Panel服务运行状态4.检查1Panel监听…

数据结构——二叉搜索树、平衡二叉树、红黑树

数据结构——二叉搜索树 一、二叉搜索树1.二叉搜索树的特性2.二叉搜索树的查找、插入和删除 二、平衡二叉树1.基本介绍2.AVL树的自平衡1)自平衡的调整操作2)自平衡调整的局面 3.AVL树的代码实现4.AVL树的特点 三、红黑树1.基本介绍2.红黑树的自平衡1&…

秒杀系统如何设计

思路:对于秒杀系统,两个架构优化思路: 1)尽量将请求拦截在系统上游 2)读多写少的常用多使用缓存 1、限制用户在x秒之内只能提交一次请求 2、同一个uid,或同一类查询(例如车次)。限制…

配电网光伏/储能双层优化配置模型(选址定容)

目录 1 主要内容 上层目标函数考虑光伏和储能的投资成本。 程序采用模块化编程,并有每个模块功能介绍,方便学习。 2 部分代码 3 程序结果 4 程序结果 1 主要内容 该程序主要方法复现《含高比例可再生能源配电网灵活资源双层优化配置》运行-规划联合…

【Maven 入门】第二章、Maven核心程序解压与配置

一、Maven 官网地址 首页: Maven – Welcome to Apache Maven(opens new window) 下载页面: Maven – Download Apache Maven(opens new window) 本文以maven-3.3.8为例 具体下载地址:https://dlcdn.apache.org/maven/maven-3/3.8.8/bina…

LeetCode刷题集(二)(LeetCode 2037使每位学生都有座位的最少移动次数)

学习目标: 掌握LeetCode2037使每位学生都有座位的最少移动次数 题目内容: 一个房间里有 n 个座位和 n 名学生,房间用一个数轴表示。给你一个长度为 n 的数组 seats ,其中 seats[i] 是第 i 个座位的位置。同时给你一个长度为 n 的数…

数据结构-排序3(终章)

前言: 上一章,对交换排序的冒牌和快排做了复盘,这一章对,归并排序以及非比较排序中的计数排序做一个复盘。 目录 2.4归并排序 2.4.1规定递归 2.4.2归并非递归 2.5非比较排序 2.5.1计数排序 2.6排序的稳定性分析 2.6.1冒…

【Transformer系列(2)】注意力机制、自注意力机制、多头注意力机制、通道注意力机制、空间注意力机制超详细讲解

前言 注意力机制一直是一个比较热的话题,其实在很早之前就提出了,我们在学习图像分类时在SENet就见到过(直通车:经典神经网络论文超详细解读(七)——SENet(注意力机制)学习笔记&…

金陵科技学院五年一贯制专转本管理学原理考试大纲

金陵科技学院五年一贯制专转本管理学原理考试大纲 一、考核对象 本课程的考核对象为五年一贯制高职专转本“旅游管理”专业入学考试考生。 二、考核方式 本课程考核采用闭卷笔试的方式。 三、命题依据及原则 1、命题依据 参考书目:《管理学——原理与方法》 …