Numpy Concat详解

一、concat函数介绍

在numpy中,concat函数可以用于沿特定轴连接两个或多个数组。

np.concatenate((a1, a2, ...), axis=0, out=None)

参数axis指示了沿哪个轴连接数组。如果没有指定,np.concatenate默认将沿着第一个维度(即axis=0)进行连接。

二、在第一个轴上连接数组

当输入参数里所有数组的shape在第一个轴上的大小相同时,我们可以通过np.concatenate将它们在第一个轴上连接起来。

import numpy as np

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

result = np.concatenate((arr1, arr2, arr3))
print(result)

输出结果为:

[[ 1  2]
 [ 3  4]
 [ 5  6]
 [ 7  8]
 [ 9 10]
 [11 12]]

三、在其他轴上连接数组

当我们需要连接的数组shape不同的轴时,可以通过np.concatenate指定轴号,来沿其他轴对数组进行连接。

arr1 = np.array([[[1, 2], [3, 4]], [[5, 6], [7, 8]]])
arr2 = np.array([[[9, 10], [11, 12]], [[13, 14], [15, 16]]])

# 沿第一个轴连接
result1 = np.concatenate((arr1, arr2), axis=0)

# 沿第三个轴连接
result2 = np.concatenate((arr1, arr2), axis=2)

print("沿第一个轴连接结果:\n", result1)
print("沿第三个轴连接结果:\n", result2)

输出结果为:

沿第一个轴连接结果:
 [[[ 1  2]
  [ 3  4]]

 [[ 5  6]
  [ 7  8]]

 [[ 9 10]
  [11 12]]

 [[13 14]
  [15 16]]]

沿第三个轴连接结果:
 [[[ 1  2  9 10]
  [ 3  4 11 12]]

 [[ 5  6 13 14]
  [ 7  8 15 16]]]

四、使用out参数避免数组复制

在进行大量数组连接操作时,numpy会创建一个新的数组来存储最终结果,这将导致不必要的内存复制。可以通过指定参数out来避免这种情况。

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

# 指定输出数组
out = np.zeros(9)
np.concatenate([x, y, z], out=out)
print(out)

输出结果为:

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

五、使用stack函数进行堆叠操作

除了concatenate函数,numpy还提供了stack函数,不同之处在于,stack函数会将输入的数组沿新的轴方向堆叠起来。

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

# 沿新轴(第一轴)方向堆叠数组
result = np.stack((arr1, arr2, arr3))
print(result)

输出结果为:

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

六、总结

Numpy的concatenate函数提供了沿特定轴连接两个或多个数组的功能。通过指定参数axis可以选择不同轴向进行连接。如果需要避免不必要的内存复制,可以使用参数out来指定输出数组。stack函数则提供了将输入的数组沿新的轴方向堆叠起来的功能。

原创文章,作者:OBVY,如若转载,请注明出处:https://www.506064.com/n/144852.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
OBVYOBVY
上一篇 2024-10-26 11:52
下一篇 2024-10-26 11:53

相关推荐

  • Python矩阵转置函数Numpy

    本文将介绍如何使用Python中的Numpy库实现矩阵转置。 一、Numpy库简介 在介绍矩阵转置之前,我们需要了解一下Numpy库。Numpy是Python语言的计算科学领域的基…

    编程 2025-04-28
  • Python列表转numpy数组

    本文将阐述Python中列表如何转换成numpy数组。在科学计算和数据分析领域中,numpy数组扮演着重要的角色。Python与numpy的无缝结合使得数据操作更加方便和高效。因此…

    编程 2025-04-27
  • Python三大:NumPy、Pandas、matplotlib

    本文将详细介绍三大Python数据处理及可视化库——NumPy、Pandas以及matplotlib,为读者提供从基础使用到应用场景的全面掌握。 一、NumPy NumPy是Pyt…

    编程 2025-04-27
  • 神经网络代码详解

    神经网络作为一种人工智能技术,被广泛应用于语音识别、图像识别、自然语言处理等领域。而神经网络的模型编写,离不开代码。本文将从多个方面详细阐述神经网络模型编写的代码技术。 一、神经网…

    编程 2025-04-25
  • Linux sync详解

    一、sync概述 sync是Linux中一个非常重要的命令,它可以将文件系统缓存中的内容,强制写入磁盘中。在执行sync之前,所有的文件系统更新将不会立即写入磁盘,而是先缓存在内存…

    编程 2025-04-25
  • 详解eclipse设置

    一、安装与基础设置 1、下载eclipse并进行安装。 2、打开eclipse,选择对应的工作空间路径。 File -> Switch Workspace -> [选择…

    编程 2025-04-25
  • nginx与apache应用开发详解

    一、概述 nginx和apache都是常见的web服务器。nginx是一个高性能的反向代理web服务器,将负载均衡和缓存集成在了一起,可以动静分离。apache是一个可扩展的web…

    编程 2025-04-25
  • Python输入输出详解

    一、文件读写 Python中文件的读写操作是必不可少的基本技能之一。读写文件分别使用open()函数中的’r’和’w’参数,读取文件…

    编程 2025-04-25
  • Linux修改文件名命令详解

    在Linux系统中,修改文件名是一个很常见的操作。Linux提供了多种方式来修改文件名,这篇文章将介绍Linux修改文件名的详细操作。 一、mv命令 mv命令是Linux下的常用命…

    编程 2025-04-25
  • git config user.name的详解

    一、为什么要使用git config user.name? git是一个非常流行的分布式版本控制系统,很多程序员都会用到它。在使用git commit提交代码时,需要记录commi…

    编程 2025-04-25

发表回复

登录后才能评论