一文详解NumPy数组迭代与合并

 更新时间:2024年05月15日 08:30:11   作者:小万哥丶  
NumPy 数组迭代是访问和处理数组元素的重要方法,它允许您逐个或成组地遍历数组元素,NumPy 提供了多种函数来合并数组,用于将多个数组的内容连接成一个新数组,本文给大家详细介绍了NumPy数组迭代与合并,需要的朋友可以参考下

NumPy 数组迭代

NumPy 数组迭代是访问和处理数组元素的重要方法。它允许您逐个或成组地遍历数组元素。

基本迭代

我们可以使用 Python 的基本 for 循环来迭代 NumPy 数组。

一维数组迭代:

import numpy as np

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

for element in arr:
    print(element)

二维数组迭代:

import numpy as np

arr = np.array([[1, 2, 3], [4, 5, 6], [7, 8, 9]])

for row in arr:
    for element in row:
        print(element)

多维数组迭代:

对于更高维度的数组,我们可以使用嵌套循环来迭代每个维度。

import numpy as np

arr = np.array([[[1, 2, 3], [4, 5, 6]], [[7, 8, 9], [10, 11, 12]]])

for cube in arr:
    for row in cube:
        for element in row:
            print(element)

使用 nditer() 进行高级迭代

NumPy 提供了 np.nditer() 函数,用于更复杂的迭代操作。它允许您:

指定迭代顺序:order 参数可以是 'C'(行优先)或 'F'(列优先)。 过滤元素:flags 参数可以包含 'filtering''slicing' 等标志,用于过滤元素。 转换数据类型:op_dtypes 参数可以指定迭代过程中元素的数据类型。 使用步长:axesstep 参数可以用于指定迭代步长。

示例:

import numpy as np

arr = np.array([[1, 2, 3], [4, 5, 6]])

# 迭代每个元素,并将其转换为字符串
for element in np.nditer(arr, op_dtypes=['S']):
    print(element)

示例:

import numpy as np

arr = np.array([[1, 2, 3], [4, 5, 6]])

# 迭代行,跳过第一个元素
for row in np.nditer(arr[:, 1:], flags=['slicing']):
    print(row)

示例:

import numpy as np

arr = np.array([[1, 2, 3], [4, 5, 6]])

# 迭代列,每隔一个元素
for column in np.nditer(arr[:, ::2], flags=['slicing']):
    print(column)

使用ndenumerate()进行枚举迭代

np.ndenumerate() 函数将每个元素与其索引一起返回。

示例:

import numpy as np

arr = np.array([[1, 2, 3], [4, 5, 6]])

for (row_idx, col_idx), element in np.ndenumerate(arr):
    print(f"({row_idx}, {col_idx}): {element}")

练习

使用 NumPy 数组迭代完成以下任务:

  • 创建一个 3x3 的二维数组,并打印每个元素。
  • 创建一个 5x5x5 的三维数组,并打印每个元素的坐标和值。
  • 创建一个 10 个元素的一维数组,并计算数组元素的平均值。
  • 创建一个 2x2 的二维数组,并将其转置(行列互换)。
  • 创建一个 3x4 的二维数组,并沿第 1 轴(行)堆叠两个这样的数组。

在评论中分享您的代码和输出。

Sure, here is the requested Markdown formatted content:

NumPy 合并数组

NumPy 提供了多种函数来合并数组,用于将多个数组的内容连接成一个新数组。

合并数组

np.concatenate() 函数用于沿指定轴连接多个数组。

语法:

np.concatenate((arr1, arr2, ..., arrN), axis=None)

arr1, arr2, ..., arrN: 要合并的数组。 axis: 指定连接的轴。默认为 0。

示例:

import numpy as np

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

# 合并两个一维数组
arr = np.concatenate((arr1, arr2))
print(arr)  # 输出: [1 2 3 4 5 6]

# 沿行合并两个二维数组
arr1 = np.array([[1, 2], [3, 4]])
arr2 = np.array([[5, 6], [7, 8]])
arr = np.concatenate((arr1, arr2), axis=1)
print(arr)  # 输出: [[ 1  2  5  6]
                        #  [ 3  4  7  8]]

堆叠数组

np.stack() 函数用于沿新轴堆叠多个数组。

语法:

np.stack((arr1, arr2, ..., arrN), axis=None)

arr1, arr2, ..., arrN: 要堆叠的数组。 axis: 指定堆叠的轴。默认为 0。

示例:

import numpy as np

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

# 沿第二轴堆叠两个一维数组
arr = np.stack((arr1, arr2), axis=1)
print(arr)  # 输出: [[1 4]
                        #  [2 5]
                        #  [3 6]]

# 沿行堆叠
arr1 = np.array([[1, 2], [3, 4]])
arr2 = np.array([[5, 6], [7, 8]])
arr = np.stack((arr1, arr2), axis=0)
print(arr)  # 输出: [[1 2]
                        #  [3 4]
                        #  [5 6]
                        #  [7 8]]

辅助函数

NumPy 提供了一些辅助函数来方便常见轴上的堆叠操作:

np.hstack():沿水平方向(行)堆叠数组。 np.vstack():沿垂直方向(列)堆叠数组。 np.dstack():沿第三轴(深度)堆叠数组。

示例:

import numpy as np

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

# 沿行堆叠
arr = np.hstack((arr1, arr2))
print(arr)  # 输出: [1 2 3 4 5 6]

# 沿列堆叠
arr = np.vstack((arr1, arr2))
print(arr)  # 输出: [[1 4]
                        #  [2 5]
                        #  [3 6]]

练习

使用 NumPy 的正确方法,将以下数组 arr1 和 arr2 合并成一个新数组。

import numpy as np

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

# 期望输出: [1 4 2 5 3 6]

在评论中分享您的代码和输出。

最后

到此这篇关于一文详解NumPy数组迭代与合并的文章就介绍到这了,更多相关NumPy数组迭代与合并内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • python产生模拟数据faker库的使用详解

    python产生模拟数据faker库的使用详解

    这篇文章主要介绍了python产生模拟数据faker库的使用详解,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2020-11-11
  • Python-OpenCV实现图像缺陷检测的实例

    Python-OpenCV实现图像缺陷检测的实例

    本文将结合实例代码,在Jupyter Notebook上使用Python+opencv实现如下图像缺陷检测。需要的朋友们下面随着小编来一起学习学习吧
    2021-06-06
  • Python程序设计入门(4)模块和包

    Python程序设计入门(4)模块和包

    Python语言功能非常强大,除了类之外,还有模块和包的概念,这有点像perl,本文主要介绍了包和模块,需要的朋友可以参考下
    2014-06-06
  • Python3实现从排序数组中删除重复项算法分析

    Python3实现从排序数组中删除重复项算法分析

    这篇文章主要介绍了Python3实现从排序数组中删除重复项算法,结合3个完整实例形式分析了Python3针对排序数组的遍历、去重、长度计算等相关操作技巧,需要的朋友可以参考下
    2019-04-04
  • 利用Python批量压缩png方法实例(支持过滤个别文件与文件夹)

    利用Python批量压缩png方法实例(支持过滤个别文件与文件夹)

    这篇文章主要给大家介绍了关于利用Python批量压缩png的相关资料,文中介绍的方法支持过滤个别文件与文件夹,文中通过示例代码介绍的非常详细,需要的朋友们下面跟着小编来一起看看吧。
    2017-07-07
  • Python使用melt和pivot实现DataFrame格式转换

    Python使用melt和pivot实现DataFrame格式转换

    在数据处理与分析中,经常遇到数据需要进行格式转换的情况,例如将数据从宽表格式转换为长表格式,或将数据重新分组汇总,Pandas提供了丰富的reshape操作,尤其是melt和pivot这两个函数,使得DataFrame可以在宽表与长表之间高效转换,本文介绍的非常详细,需要的朋友可以参考下
    2025-01-01
  • pycharm与cmd中制表符不一样的问题解决

    pycharm与cmd中制表符不一样的问题解决

    本文主要介绍了PyCharm和CMD中制表符宽度不同的问题,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2024-12-12
  • pyqt5之将textBrowser的内容写入txt文档的方法

    pyqt5之将textBrowser的内容写入txt文档的方法

    今天小编就为大家分享一篇pyqt5之将textBrowser的内容写入txt文档的方法,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2019-06-06
  • 详解Python中expandtabs()方法的使用

    详解Python中expandtabs()方法的使用

    这篇文章主要介绍了详解Python中expandtabs()方法的使用,是Python入门中的基础知识,需要的朋友可以参考下
    2015-05-05
  • 对json字符串与python字符串的不同之处详解

    对json字符串与python字符串的不同之处详解

    今天小编就为大家分享一篇对json字符串与python字符串的不同之处详解,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2018-12-12

最新评论