当前位置:首页 > 编程技术 > 正文内容

如何连接两个二维数字NumPy数组?

yc8881年前 (2023-07-21)编程技术287

如何连接两个二维数字NumPy数组?

Python 是一种通用且功能强大的编程语言,广泛用于科学计算、数据分析和机器学习。使Python对这些领域如此有用的关键库之一是NumPy。NumPy提供了强大的工具来处理数组,这对于许多科学计算任务至关重要。在本文中,我们将探讨如何使用 Python 连接两个二维 NumPy 数组。

如果您曾经在 Python 中使用过数组,您就会知道它们对于存储和操作大量数据是多么有用。但是,您可能需要将两个数组合并为一个更大的数组。这就是数组串联的用武之地。在本教程中,我们将向您展示如何使用两种不同的方法在 Python 中连接两个二维 NumPy 数组。所以让我们开始吧!

如何连接两个二维数字数组?

串联是将两个或多个字符串、数组或其他数据结构组合成单个实体的过程。它涉及将两个或多个字符串或数组的内容连接在一起以创建新的字符串或数组。

有多种方法可以连接两个二维 NumPy 数组。让我们一一深入研究。

方法 1:使用 np.concatenate()

np.concatenate() 函数将数组序列作为其第一个参数,该参数可以是元组、列表或任何包含要连接的数组的可迭代对象。我们还可以指定要连接数组的轴,可以是 0(用于垂直连接)或 1(用于水平连接)。

下面是使用 np.concatenate() 水平连接两个二维 NumPy 数组的示例:

import numpy as np # create two 2D arrays arr1 = np.array([[1, 2], [3, 4]]) arr2 = np.array([[5, 6], [7, 8]]) # concatenate horizontally arr3 = np.concatenate((arr1, arr2), axis=1) # print the concatenated array print(arr3)

输出

[[1 2 5 6]  [3 4 7 8 ]]

在上面的例子中,我们首先使用 np.array() 函数创建两个 2D 数组 arr1 和 arr2。然后,我们使用 np.concatenate() 沿第二个轴(axis=1)水平连接这些数组。生成的串联数组 arr3 包含水平排列的 arr1 和 arr2 中的所有元素。请注意,我们指定 axis=1 来水平连接数组,并且生成的串联数组与输入数组具有相同的行数。

我们还可以使用 np.concatenate() 通过指定 axis=2 来垂直连接两个二维 NumPy 数组。下面是一个示例:

import numpy as np # create two 2D arrays arr1 = np.array([[1, 2], [3, 4]]) arr2 = np.array([[5, 6], [7, 8]]) # concatenate vertically arr3 = np.concatenate((arr1, arr2), axis=0) # print the concatenated array print(arr3)

输出

[[1 2]  [3 4]  [5 6]  [7 8]]

在上面的代码示例中,我们再次使用 np.array() 函数创建了两个 2D 数组 arr1 和 arr2,然后使用 np.concatenate() 沿第一个轴垂直连接这些数组 (axis=0)。生成的串联数组 arr3 包含来自 arr1 和 arr2 的所有元素,这些元素垂直排列。请注意,我们指定 axis=0 来垂直连接数组,并且生成的串联数组具有与输入数组相同的列数。

方法 2:使用 np.vstack() 和 np.hstack()

除了 np.concatenate() 函数之外,NumPy 还提供了另外两个可用于连接二维数组的函数:np.vstack() 和 np.hstack()。这些函数分别专门设计用于垂直和水平串联。

np.vstack():此函数可用于垂直堆叠两个二维数组。它接受数组元组作为输入,并返回一个新数组,其中输入数组垂直堆叠。结果数组的形状为 (m+n, k),其中 m 和 n 是输入数组中的行数,k 是列数。

下面是一个使用 np.vstack() 方法连接两个二维数组的示例:

import numpy as np # Creating two 2-dimensional arrays array1 = np.array([[1, 2], [3, 4]]) array2 = np.array([[5, 6], [7, 8]]) # Stacking the two arrays vertically result = np.vstack((array1, array2)) print("Array 1:") print(array1) print("\nArray 2:") print(array2) print("\nResult after vertical concatenation:") print(result)

输出

Array 1: [[1 2]  [3 4]] Array 2: [[5 6]  [7 8]] Result after vertical concatenation: [[1 2]  [3 4]  [5 6]  [7 8]]

正如你在上面看到的,生成的串联数组结果将有一个形状 (4, 2),数组 1 的元素首先出现,然后是 array2 的元素。np.vstack() 函数垂直堆叠数组,这意味着数组一个放在另一个之上。

np.hstack():此函数可用于水平堆叠两个二维数组。它接受数组元组作为输入,并返回一个新数组,其中输入数组水平堆叠。结果数组的形状为 (m, n+p),其中 m 是输入数组中的行数,n 和 p 分别是第一个和第二个数组中的列数。

下面是一个演示 np.hstack() 用法的示例:

import numpy as np # Creating two 2-dimensional arrays array1 = np.array([[1, 2], [3, 4]]) array2 = np.array([[5, 6], [7, 8]]) # Stacking the two arrays horizontally result = np.hstack((array1, array2)) print("Array 1:") print(array1) print("\nArray 2:") print(array2) print("\nResult after horizontal concatenation:") print(result)

输出

Array 1: [[1 2]  [3 4]] Array 2: [[5 6]  [7 8]] Result after horizontal concatenation: [[1 2 5 6]  [3 4 7 8]]

正如您在输出中观察到的那样,生成的级联数组也是一个形状为 (2, 2) 的二维 NumPy 数组。串联数组的前两列包含 'array4' 的元素,最后两列包含 'array1' 的元素。

结论

在本文中,我们探讨了使用 Numpy − np.concatenate() 和 np.vstack()/np.hstack() 连接两个二维数组的两种方法。我们提供了每种方法的示例,演示了如何使用这些函数水平和垂直连接两个二维数组。这些方法对于在科学计算、数据分析和机器学习任务中组合数组和处理大量数据非常有用。


本站发布的内容若侵犯到您的权益,请邮件联系站长删除,我们将及时处理!


从您进入本站开始,已表示您已同意接受本站【免责声明】中的一切条款!


本站大部分下载资源收集于网络,不保证其完整性以及安全性,请下载后自行研究。


本站资源仅供学习和交流使用,版权归原作者所有,请勿商业运营、违法使用和传播!请在下载后24小时之内自觉删除。


若作商业用途,请购买正版,由于未及时购买和付费发生的侵权行为,使用者自行承担,概与本站无关。


本文链接:https://www.10zhan.com/biancheng/10636.html

标签: PythonNumPy
分享给朋友:

“如何连接两个二维数字NumPy数组?” 的相关文章

【说站】laravel实现自定义404页面并给页面传值

【说站】laravel实现自定义404页面并给页面传值

以 laravel5.8 为例,虽然有自带的404页面,但太简单,我们更希望能自定义404页面,将用户留在站点。实现的方式很简单,将自定义的视图文件命名为 404.blade.php,并放到 reso...

【说站】用一句话就可以去除宝塔面板操作上的二次验证

【说站】用一句话就可以去除宝塔面板操作上的二次验证

用过宝塔的朋友应该都会发现,现在宝塔面板有些鸡肋的功能,删除文件、删除数据库、删除站点等操作都需要做计算题!不仅加了几秒的延时等待,还无法跳过!这时候就会有朋友在想,如何去除宝塔面板的二次验证,此篇文...

【说站】Centos8.0如何配置静态IP详解及永久关闭防火墙

【说站】Centos8.0如何配置静态IP详解及永久关闭防火墙

这篇文章主要介绍了详解Centos8 配置静态IP的实现,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来学习一下!1. 查看自己的网关地址点击虚...

【说站】利用Webhook实现Java项目自动化部署

【说站】利用Webhook实现Java项目自动化部署

用webhook就能实现Java项目自动部署,其实原理很简单。费话不多说,直接往下看教程。1. 创建gitee仓库并初始化2. 在linux安装git3. 在宝塔的软件的商店里下载Webhook4....

【说站】Java从resources读取文件内容的方法有哪些

【说站】Java从resources读取文件内容的方法有哪些

本文主要介绍的是java读取resource目录下文件的方法,比如这是你的src目录的结构├── main│ ├── java│ │ └── ...

【说站】linux中redis如何以redis用户重启?

【说站】linux中redis如何以redis用户重启?

通过上图我们可以看到,目前状态是已经以 redis 用户启动着,我想修改下 redis 的密码,然后怎么以 redis 用户重启呢?redis 是 nologin 用户,不能通过 su redis 切...