網(wǎng)站首頁 編程語言 正文
numpy中數(shù)組拼接、數(shù)組合并方法總結(append(),?concatenate,?hstack,?vstack,?column_stack,?row_stack,?np.r_,?np.c_等)_python
作者:Old_D7 ? 更新時間: 2022-10-07 編程語言零. 維度和軸
Python中可以用numpy中的ndim和shape來分別查看維度,以及在對應維度上的長度。直觀上可以根據(jù)符號“[ ]”的層數(shù)來判斷,有m層即為m維,最外面1層對應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.
- 該軸指定沿其附加值的軸。 如果未提供軸,則將兩個陣列展平。
1. 展平兩個數(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)
# 當 2×2 數(shù)組沿 x 軸合并時,輸出數(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)
# 當 2×2 數(shù)組沿 y 軸合并時,輸出數(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: 沿指定的軸進行拼接,默認0,即第一個軸
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) # 這里沿第二個軸,即列方向進行拼接
array([[ 1, 2, 3, 7, 8, 9],
[ 4, 5, 6, 11, 12, 13]])
arr3 = np.array([[14,15,16]]) # shape: (1, 3)
# 一般進行 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 方向的長度不一致,報錯
np.concatenate((arr1, arr3), axis=1)
三、hstack, vstack
np.hstack((arr1,arr2)) # 水平拼接,沿著行的方向,對列進行拼接
array([[ 1, 2, 3, 7, 8, 9],
[ 4, 5, 6, 11, 12, 13]])
np.vstack((arr1,arr2)) # 垂直拼接,沿著列的方向,對行進行拼接
array([[ 1, 2, 3],
[ 4, 5, 6],
[ 7, 8, 9],
[11, 12, 13]])
四、column_stack, row_stack
np.column_stack((arr1,arr2)) # 水平拼接,沿著行的方向,對列進行拼接
array([[ 1, 2, 3, 7, 8, 9],
[ 4, 5, 6, 11, 12, 13]])
np.row_stack((arr1,arr2)) # 垂直拼接,沿著列的方向,對行進行拼接
array([[ 1, 2, 3],
[ 4, 5, 6],
[ 7, 8, 9],
[11, 12, 13]])
五、 np.r_, np.c_
np.r_[arr1,arr2] # 垂直拼接,沿著列的方向,對行進行拼接
array([[ 1, 2, 3],
[ 4, 5, 6],
[ 7, 8, 9],
[11, 12, 13]])
np.c_[arr1,arr2] # 水平拼接,沿著行的方向,對列進行拼接
array([[ 1, 2, 3, 7, 8, 9],
[ 4, 5, 6, 11, 12, 13]])
六、總結
方法 | 拼接方式 |
---|---|
concatenate | 提供了axis參數(shù),用于指定拼接方向 |
append | 默認先ravel再拼接成一維數(shù)組,也可指定axis |
hstack | 水平拼接,沿著行的方向,對列進行拼接 |
vstack | 垂直拼接,沿著列的方向,對行進行拼接 |
column_stack | 水平拼接,沿著行的方向,對列進行拼接 |
row_stack | 垂直拼接,沿著列的方向,對行進行拼接 |
r_ | 垂直拼接,沿著列的方向,對行進行拼接 |
c_ | 水平拼接,沿著行的方向,對列進行拼接 |
對于兩個shape一樣的二維array來說:
增加行(對行進行拼接)的方法有:
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]
增加列(對列進行拼接)的方法有:
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
https://www.jb51.net/article/161997.htm
https://blog.csdn.net/u011913417/article/details/106904183
總結?
原文鏈接:https://blog.csdn.net/Old_D7/article/details/124857680
相關推薦
- 2022-09-20 Python使用Flask?Migrate模塊遷移數(shù)據(jù)庫_python
- 2023-07-02 Golang?time.Sleep()用法及示例講解_Golang
- 2023-06-16 GO的鎖和原子操作的示例詳解_Golang
- 2022-08-30 啟動Activity但是不顯示界面
- 2022-03-05 centos7下搭建DNS服務器介紹_Linux
- 2022-07-28 Python?Flask實現(xiàn)圖片上傳與下載的示例詳解_python
- 2022-09-05 C語言中scanf函數(shù)的原樣輸入的坑及解決_C 語言
- 2022-11-04 golang?cache帶索引超時緩存庫實戰(zhàn)示例_Golang
- 最近更新
-
- window11 系統(tǒng)安裝 yarn
- 超詳細win安裝深度學習環(huán)境2025年最新版(
- Linux 中運行的top命令 怎么退出?
- MySQL 中decimal 的用法? 存儲小
- get 、set 、toString 方法的使
- @Resource和 @Autowired注解
- Java基礎操作-- 運算符,流程控制 Flo
- 1. Int 和Integer 的區(qū)別,Jav
- spring @retryable不生效的一種
- Spring Security之認證信息的處理
- Spring Security之認證過濾器
- Spring Security概述快速入門
- Spring Security之配置體系
- 【SpringBoot】SpringCache
- Spring Security之基于方法配置權
- redisson分布式鎖中waittime的設
- maven:解決release錯誤:Artif
- restTemplate使用總結
- Spring Security之安全異常處理
- MybatisPlus優(yōu)雅實現(xiàn)加密?
- Spring ioc容器與Bean的生命周期。
- 【探索SpringCloud】服務發(fā)現(xiàn)-Nac
- Spring Security之基于HttpR
- Redis 底層數(shù)據(jù)結構-簡單動態(tài)字符串(SD
- arthas操作spring被代理目標對象命令
- Spring中的單例模式應用詳解
- 聊聊消息隊列,發(fā)送消息的4種方式
- bootspring第三方資源配置管理
- GIT同步修改后的遠程分支