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/zh-tw/n/144852.html

(0)
打賞 微信掃一掃 微信掃一掃 支付寶掃一掃 支付寶掃一掃
OBVY的頭像OBVY
上一篇 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

發表回復

登錄後才能評論