世界快播:numpy中数组拼接、数组合并方法总结(append(), concatenate, hstack, vstack, column_stack, row_stack, np.r_, np.c_等)
(资料图)
目录
零. 维度和轴一、append()二、concatenate三、hstack, vstack四、column_stack, row_stack五、 np.r_, np.c_六、总结参考总结零. 维度和轴
Python中可以用numpy中的ndim和shape来分别查看维度,以及在对应维度上的长度。直观上可以根据符号“[ ]”的层数来判断,有m层即为m维,最外面1层对应axis0, 依次为axis1,axis2…
c = np.array([[[1,2,3], [4,5,6]]]) c.ndim # 3 # 三维数组 c.shape # (1, 2, 3) # 在axis 0 上的长度为1,在axis 1上的长度为2, 在axis 2上的长度为3. # 或者可以理解为1层2行3列
一、append()
The arrcan be an array-like object or a NumPy array. The values are appended to a copy of this array.numpy.append(arr, values, axis=None)
arr可以是类似数组的对象或NumPy数组。 这些值将附加到此数组的副本中。The valuesare array-like objects and it’s appended to the end of the “arr” elements.这些值是类似数组的对象,并附加到“ arr”元素的末尾。The axisspecifies the axis along which values are appended. If the axis is not provided, both the arrays are flattened.该轴指定沿其附加值的轴。 如果未提供轴,则将两个阵列展平。
1. 展平两个数组(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 数组沿 x 轴合并时,输出数组大小为 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 数组沿 y 轴合并时,输出数组大小为 2×4 Merged 2x2 Arrays along Axis-1: [[ 1 2 10 20] [ 3 4 30 40]]
二、concatenate
a_tuple:对需要合并的数组用元组的形式给出axis: 沿指定的轴进行拼接,默认0,即第一个轴concatenate(a_tuple, axis=0, out=None)
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参数,用于指定拼接方向 |
append | 默认先ravel再拼接成一维数组,也可指定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
总结
到此这篇关于numpy中数组拼接、数组合并方法的文章就介绍到这了,更多相关numpy数组拼接数组合并方法内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!
X 关闭
X 关闭
- 1亚马逊开始大规模推广掌纹支付技术 顾客可使用“挥手付”结账
- 2现代和起亚上半年出口20万辆新能源汽车同比增长30.6%
- 3如何让居民5分钟使用到各种设施?沙特“线性城市”来了
- 4AMD实现连续8个季度的增长 季度营收首次突破60亿美元利润更是翻倍
- 5转转集团发布2022年二季度手机行情报告:二手市场“飘香”
- 6充电宝100Wh等于多少毫安?铁路旅客禁止、限制携带和托运物品目录
- 7好消息!京东与腾讯续签三年战略合作协议 加强技术创新与供应链服务
- 8名创优品拟通过香港IPO全球发售4100万股 全球发售所得款项有什么用处?
- 9亚马逊云科技成立量子网络中心致力解决量子计算领域的挑战
- 10京东绿色建材线上平台上线 新增用户70%来自下沉市场