当前位置: 首页 > news >正文

【Python入门知识】NumPy数组迭代及连接

前言

嗨喽~大家好呀,这里是魔王呐 ❤ ~!

数组迭代

迭代意味着逐一遍历元素,当我们在 numpy 中处理多维数组时,

可以使用 python 的基本 for 循环来完成此操作。

如果我们对 1-D 数组进行迭代,它将逐一遍历每个元素。

实例

迭代以下一维数组的元素:

import numpy as nparr = np.array([1, 2, 3])for x in arr:print(x)

运行实例

更多python资料、源码、教程: 点击此处跳转文末名片获取

迭代 2-D 数组

在 2-D 数组中,它将遍历所有行。

实例

迭代以下二维数组的元素:

import numpy as nparr = np.array([[1, 2, 3], [4, 5, 6]])for x in arr:print(x)

运行实例

如果我们迭代一个 n-D 数组,它将逐一遍历第 n-1 维。

如需返回实际值、标量,我们必须迭代每个维中的数组。

实例

迭代 2-D 数组的每个标量元素:

import numpy as nparr = np.array([[1, 2, 3], [4, 5, 6]])for x in arr:for y in x:print(y)

运行实例

迭代 3-D 数组

在 3-D 数组中,它将遍历所有 2-D 数组。

实例

迭代以下 3-D 数组的元素:

import numpy as nparr = np.array([[[1, 2, 3], [4, 5, 6]], [[7, 8, 9], [10, 11, 12]]])for x in arr:print(x)

运行实例

要返回实际值、标量,我们必须迭代每个维中的数组。

更多python资料、源码、教程: 点击此处跳转文末名片获取

实例

迭代到标量:

import numpy as nparr = np.array([[[1, 2, 3], [4, 5, 6]], [[7, 8, 9], [10, 11, 12]]])for x in arr:for y in x:for z in y:print(z)

运行实例

使用 nditer() 迭代数组

函数 nditer() 是一个辅助函数,从非常基本的迭代到非常高级的迭代都可以使用。它解决了我们在迭代中面临的一些基本问题,让我们通过例子进行介绍。

迭代每个标量元素

在基本的 for 循环中,迭代遍历数组的每个标量,我们需要使用 n 个 for 循环,对于具有高维数的数组可能很难编写。

实例

遍历以下 3-D 数组:

import numpy as nparr = np.array([[[1, 2], [3, 4]], [[5, 6], [7, 8]]])for x in np.nditer(arr):print(x)

运行实例

迭代不同数据类型的数组

我们可以使用 op_dtypes 参数,并传递期望的数据类型,以在迭代时更改元素的数据类型。

NumPy 不会就地更改元素的数据类型(元素位于数组中),

因此它需要一些其他空间来执行此操作,该额外空间称为 buffer

为了在 nditer() 中启用它,我们传参 flags=[‘buffered’]

实例

以字符串形式遍历数组:

import numpy as nparr = np.array([1, 2, 3])for x in np.nditer(arr, flags=['buffered'], op_dtypes=['S']):print(x)

运行实例

以不同的步长迭代

我们可以使用过滤,然后进行迭代。

实例

每遍历 2D 数组的一个标量元素,跳过 1 个元素:

import numpy as nparr = np.array([[1, 2, 3, 4], [5, 6, 7, 8]])for x in np.nditer(arr[:, ::2]):print(x)

运行实例

更多python资料、源码、教程: 点击此处跳转文末名片获取

使用 ndenumerate() 进行枚举迭代

枚举是指逐一提及事物的序号。

有时,我们在迭代时需要元素的相应索引,对于这些用例,可以使用 ndenumerate() 方法。

实例

枚举以下 1D 数组元素:

import numpy as nparr = np.array([1, 2, 3])for idx, x in np.ndenumerate(arr):print(idx, x)

运行实例

实例

枚举以下 2D 数组元素

import numpy as nparr = np.array([[1, 2, 3, 4], [5, 6, 7, 8]])for idx, x in np.ndenumerate(arr):print(idx, x)

运行实例

连接 NumPy 数组

连接意味着将两个或多个数组的内容放在单个数组中。

在 SQL 中,我们基于键来连接表,而在 NumPy 中,我们按轴连接数组。

我们传递了一系列要与轴一起连接到 concatenate() 函数的数组。如果未显式传递轴,则将其视为 0。

实例

连接两个数组:

import numpy as nparr1 = np.array([1, 2, 3])arr2 = np.array([4, 5, 6])arr = np.concatenate((arr1, arr2))print(arr)

运行实例

实例

沿着行 (axis=1) 连接两个 2-D 数组:

import numpy as nparr1 = np.array([[1, 2], [3, 4]])arr2 = np.array([[5, 6], [7, 8]])arr = np.concatenate((arr1, arr2), axis=1)print(arr)

运行实例

使用堆栈函数连接数组

堆栈与级联相同,唯一的不同是堆栈是沿着新轴完成的。

我们可以沿着第二个轴连接两个一维数组,这将导致它们彼此重叠,即,堆叠(stacking)

我们传递了一系列要与轴一起连接到 concatenate() 方法的数组。如果未显式传递轴,则将其视为 0。

实例

import numpy as nparr1 = np.array([1, 2, 3])arr2 = np.array([4, 5, 6])arr = np.stack((arr1, arr2), axis=1)print(arr)

运行实例

沿行堆叠

NumPy 提供了一个辅助函数:hstack() 沿行堆叠。

实例

import numpy as nparr1 = np.array([1, 2, 3])arr2 = np.array([4, 5, 6])arr = np.hstack((arr1, arr2))print(arr)

运行实例

沿列堆叠

NumPy 提供了一个辅助函数:vstack() 沿列堆叠。

实例

import numpy as nparr1 = np.array([1, 2, 3])arr2 = np.array([4, 5, 6])arr = np.vstack((arr1, arr2))print(arr)

运行实例

更多python资料、源码、教程: 点击此处跳转文末名片获取

沿高度堆叠(深度)

NumPy 提供了一个辅助函数:dstack() 沿高度堆叠,该高度与深度相同。

实例

import numpy as nparr1 = np.array([1, 2, 3])arr2 = np.array([4, 5, 6])arr = np.dstack((arr1, arr2))print(arr)

运行实例

尾语 💝

要成功,先发疯,下定决心往前冲!

学习是需要长期坚持的,一步一个脚印地走向未来!

未来的你一定会感谢今天学习的你。

—— 心灵鸡汤

本文章到这里就结束啦~感兴趣的小伙伴可以复制代码去试试哦 😝

👇问题解答 · 源码获取 · 技术交流 · 抱团学习请联系👇

http://www.lryc.cn/news/65484.html

相关文章:

  • 我们公司的面试,有点不一样!
  • C++之初识STL—vector
  • 资讯汇总230503
  • C++之编程规范
  • ChatGPT做PPT方案,10组提示词方案!
  • 分布式夺命12连问
  • sourceTree离线环境部署
  • 6.1.1 图:基本概念
  • SlickEdit for Windows and Linux crack
  • ChatGPT实现stackoverflow 解释
  • 第五章 作业(123)【编译原理】
  • 基于Vue的个性化网络学习笔记系统
  • 如何搭建一个HTTP实验环境
  • Electron 环境搭建
  • 农机电招平台~java
  • springboot+vue体质测试数据分析及可视化设计(源码+文档)
  • thinkphp+vue+html高校固定资产管理系统维修 租借4h80u
  • 【学习笔记】「北大集训 2021」经典游戏
  • 优惠卷秒杀功能、全局唯一ID、乐观锁解决超卖问题、悲观锁实现一人一单、集群下锁失效问题
  • Nest的基本概念,以及如何使用Nest CLI来构建一个简单的Web应用程序
  • 15个创新世界119座城:1~10章音频
  • AI面试必刷算法题 附答案和解析 --持续更新中
  • 聊一聊 GDB 调试程序时的几个实用命令
  • MySQL驱动对MYSQL进行update操作时返回值注意UseAffectedRows
  • OpenCV-Python图像几何变换
  • 国民技术N32G430开发笔记(15)- IAP升级 树莓派串口发送数据
  • svo论文解读
  • DolphinScheduler海豚调度教程
  • ubuntu脚本解释器踩坑:#!/bin/bash 与 #!/bin/sh
  • 小松鼠踩一踩游戏