欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

numpy中數(shù)組拼接、數(shù)組合并方法總結(jié)(append(),?concatenate,?hstack,?vstack,?column_stack,?row_stack,?np.r_,?np.c_等)

 更新時(shí)間:2022年08月11日 14:25:54   作者:Old_D7  
numpy庫是一個(gè)高效處理多維數(shù)組的工具,可以在進(jìn)行邊寫的數(shù)組計(jì)算上進(jìn)行一系列的操作,下面這篇文章主要給大家介紹了關(guān)于numpy中數(shù)組拼接、數(shù)組合并方法(append(),?concatenate,?hstack,?vstack,?column_stack,?row_stack,?np.r_,?np.c_等)的相關(guān)資料,需要的朋友可以參考下

零. 維度和軸

Python中可以用numpy中的ndim和shape來分別查看維度,以及在對應(yīng)維度上的長度。直觀上可以根據(jù)符號“[ ]”的層數(shù)來判斷,有m層即為m維,最外面1層對應(yīng)axis0, 依次為axis1,axis2…

c = np.array([[[1,2,3], [4,5,6]]])
c.ndim   # 3
# 三維數(shù)組

c.shape  # (1, 2, 3)
# 在axis 0 上的長度為1,在axis 1上的長度為2, 在axis 2上的長度為3.
# 或者可以理解為1層2行3列

一、append()

numpy.append(arr, values, axis=None)

  • The arr can be an array-like object or a NumPy array. The values are appended to a copy of this array.
    arr可以是類似數(shù)組的對象或NumPy數(shù)組。 這些值將附加到此數(shù)組的副本中。The values are array-like objects and it’s appended to the end of the “arr” elements.
  • 這些是類似數(shù)組的對象,并附加到“ arr”元素的末尾。The axis specifies the axis along which values are appended. If the axis is not provided, both the arrays are flattened.
  • 指定沿其附加值的軸。 如果未提供軸,則將兩個(gè)陣列展平。

1. 展平兩個(gè)數(shù)組(Flattening Two Arrays)

arr1 = np.array([[1, 2], [3, 4]])
arr2 = np.array([[10, 20], [30, 40]])

# no axis provided, array elements will be flattened
arr_flat = np.append(arr1, arr2)
 
print(arr_flat)  # [ 1  2  3  4 10 20 30 40]

2. 沿軸合并(Merging Along Axis)

arr_merged = np.append([arr1, arr2], axis=0)
# 當(dāng) 2×2 數(shù)組沿 x 軸合并時(shí),輸出數(shù)組大小為 4×2 
Merged 2x2 Arrays along Axis-0:
[[ 1  2]
 [ 3  4]
 [10 20]
 [30 40]]
 
arr_merged = np.append([arr1, arr2], axis=1)
# 當(dāng) 2×2 數(shù)組沿 y 軸合并時(shí),輸出數(shù)組大小為 2×4
Merged 2x2 Arrays along Axis-1:
[[ 1  2 10 20]
 [ 3  4 30 40]]

二、concatenate

concatenate(a_tuple, axis=0, out=None)

  • a_tuple:對需要合并的數(shù)組用元組的形式給出
  • axis: 沿指定的軸進(jìn)行拼接,默認(rèn)0,即第一個(gè)軸
arr1 = np.array([[1,2,3], [4,5,6]]) # shape: (2, 3)
arr2 = np.array([[7,8,9], [11,12,13]])

np.concatenate((arr1, arr2)) # axis=0
array([[ 1, 2, 3],
    [ 4, 5, 6],
    [ 7, 8, 9],
    [11, 12, 13]])

np.concatenate((arr1, arr2),axis=1)  # 這里沿第二個(gè)軸,即列方向進(jìn)行拼接
array([[ 1, 2, 3, 7, 8, 9],
    [ 4, 5, 6, 11, 12, 13]])

arr3 = np.array([[14,15,16]]) # shape: (1, 3)
# 一般進(jìn)行 concatenate 操作的 array 的 shape 需要一致
# 但如果 array 在拼接 axis 方向的 size 不一樣,也可以完成
# arr3 雖然在 axis_0 方向的長度不一致,但 axis1 方向上一致,所以沿 axis_0 可以拼接
np.concatenate((arr1, arr3))  # √
array([[ 1, 2, 3],
    [ 4, 5, 6],
    [14, 15, 16]])
    
# arr3 和 arr1 在 axis_0 方向的長度不一致,報(bào)錯(cuò)
np.concatenate((arr1, arr3), axis=1)  

三、hstack, vstack

np.hstack((arr1,arr2))  # 水平拼接,沿著行的方向,對列進(jìn)行拼接
array([[ 1, 2, 3, 7, 8, 9],
    [ 4, 5, 6, 11, 12, 13]])
 
np.vstack((arr1,arr2))  # 垂直拼接,沿著列的方向,對行進(jìn)行拼接
array([[ 1, 2, 3],
    [ 4, 5, 6],
    [ 7, 8, 9],
    [11, 12, 13]])

四、column_stack, row_stack

np.column_stack((arr1,arr2))  # 水平拼接,沿著行的方向,對列進(jìn)行拼接
array([[ 1, 2, 3, 7, 8, 9],
   [ 4, 5, 6, 11, 12, 13]])
 
np.row_stack((arr1,arr2))  # 垂直拼接,沿著列的方向,對行進(jìn)行拼接
array([[ 1, 2, 3],
   [ 4, 5, 6],
   [ 7, 8, 9],
   [11, 12, 13]])

五、 np.r_, np.c_

np.r_[arr1,arr2]   # 垂直拼接,沿著列的方向,對行進(jìn)行拼接
array([[ 1, 2, 3],
    [ 4, 5, 6],
    [ 7, 8, 9],
    [11, 12, 13]])
 
np.c_[arr1,arr2]  # 水平拼接,沿著行的方向,對列進(jìn)行拼接
array([[ 1, 2, 3, 7, 8, 9],
    [ 4, 5, 6, 11, 12, 13]])

六、總結(jié)

方法拼接方式
concatenate提供了axis參數(shù),用于指定拼接方向
append默認(rèn)先ravel再拼接成一維數(shù)組,也可指定axis
hstack水平拼接,沿著行的方向,對列進(jìn)行拼接
vstack垂直拼接,沿著列的方向,對行進(jìn)行拼接
column_stack水平拼接,沿著行的方向,對列進(jìn)行拼接
row_stack垂直拼接,沿著列的方向,對行進(jìn)行拼接
r_垂直拼接,沿著列的方向,對行進(jìn)行拼接
c_水平拼接,沿著行的方向,對列進(jìn)行拼接

對于兩個(gè)shape一樣的二維array來說:

增加行(對行進(jìn)行拼接)的方法有:

array([[ 1, 2, 3],
    [ 4, 5, 6],
    [ 7, 8, 9],
    [11, 12, 13]])
np.concatenate((ar1, ar2),axis=0)
np.append(ar1, ar2, axis=0)
np.vstack((ar1,ar2))
np.row_stack((ar1,ar2))
np.r_[ar1,ar2]

增加列(對列進(jìn)行拼接)的方法有:

array([[ 1, 2, 3, 7, 8, 9],
    [ 4, 5, 6, 11, 12, 13]])
np.concatenate((ar1, ar2),axis=1)
np.append(ar1, ar2, axis=1)
np.hstack((ar1,ar2))
np.column_stack((ar1,ar2))
np.c_[ar1,ar2]    

參考

https://www.numpy.org.cn/reference/routines/array-manipulation.html#%E7%BB%84%E5%90%88%E6%95%B0%E7%BB%84
http://www.dbjr.com.cn/article/161997.htm
https://blog.csdn.net/u011913417/article/details/106904183

總結(jié) 

到此這篇關(guān)于numpy中數(shù)組拼接、數(shù)組合并方法的文章就介紹到這了,更多相關(guān)numpy數(shù)組拼接數(shù)組合并方法內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

最新評論