国产一区二区精品-国产一区二区精品久-国产一区二区精品久久-国产一区二区精品久久91-免费毛片播放-免费毛片基地

千鋒教育-做有情懷、有良心、有品質的職業教育機構

手機站
千鋒教育

千鋒學習站 | 隨時隨地免費學

千鋒教育

掃一掃進入千鋒手機站

領取全套視頻
千鋒教育

關注千鋒學習站小程序
隨時隨地免費學習課程

當前位置:首頁  >  技術干貨  > Numpy Concat詳解

Numpy Concat詳解

來源:千鋒教育
發布人:xqq
時間: 2023-11-23 11:23:38 1700709818

一、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函數則提供了將輸入的數組沿新的軸方向堆疊起來的功能。

tags: numpyconcat
聲明:本站稿件版權均屬千鋒教育所有,未經許可不得擅自轉載。
10年以上業內強師集結,手把手帶你蛻變精英
請您保持通訊暢通,專屬學習老師24小時內將與您1V1溝通
免費領取
今日已有369人領取成功
劉同學 138****2860 剛剛成功領取
王同學 131****2015 剛剛成功領取
張同學 133****4652 剛剛成功領取
李同學 135****8607 剛剛成功領取
楊同學 132****5667 剛剛成功領取
岳同學 134****6652 剛剛成功領取
梁同學 157****2950 剛剛成功領取
劉同學 189****1015 剛剛成功領取
張同學 155****4678 剛剛成功領取
鄒同學 139****2907 剛剛成功領取
董同學 138****2867 剛剛成功領取
周同學 136****3602 剛剛成功領取
相關推薦HOT