【Python之numpy库】10.np.hstack()和np.c_[]、np.vstack和np.r_[]、np.concatenate 数组的堆叠与平铺

如果解决了你的问题,点个赞再走嘛٩(๑❛ᴗ❛๑)۶

如果解决了你的问题,点个赞再走嘛٩(๑❛ᴗ❛๑)۶

由于这五个函数非常类似、用法相近,都是数组的堆叠或平铺,我便总结了一下

目录

一、对应关系与作用叙述

1.np.c_[]和np.r[]都是构造一个分块数组

2.在对一维数组操作时结果不同,详见代码

二、np.hstack()和np.c_[]

三、 np.vstack和np.r_[]

一、对应关系与作用叙述

1.np.c_[]和np.r[]都是构造一个分块数组

np.c[a,b]\rightarrow \begin{bmatrix} a & b \end{bmatrix}

np.r[a,b]\rightarrow \begin{bmatrix} a\\b \end{bmatrix}

2.在对一维数组操作时结果不同,详见代码

二、np.hstack()和np.c_[]

代码:

# hstack——horizontal stack,水平堆叠
# 注意除了一维数组以外,hstack与c_结果相同,都是水平平铺,但是写法有些不一样
import numpy as np

a = np.array([[1, 2],
              [3, 4]])
b = np.array([[5, 6],
              [7, 8]])
print('第一个数组:\n', a)
print('第二个数组:\n', b)

print('水平方向平铺:')
print('np.hstack((a, b))=\n', np.hstack((a, b)))
print('np.c_[a, b]=\n', np.c_[a, b])

print('\n当a,b取一维数组时:')
a = a.flatten()
b = b.flatten()
print('第一个数组:\n', a)
print('第二个数组:\n', b)
print('np.hstack((a, b))=\n', np.hstack((a, b)))
print('np.c_[a, b]=\n', np.c_[a, b])

结果:

第一个数组:
 [[1 2]
 [3 4]]
第二个数组:
 [[5 6]
 [7 8]]
水平方向平铺:
np.hstack((a, b))=
 [[1 2 5 6]
 [3 4 7 8]]
np.c_[a, b]=
 [[1 2 5 6]
 [3 4 7 8]]

当a,b取一维数组时:
第一个数组:
 [1 2 3 4]
第二个数组:
 [5 6 7 8]
np.hstack((a, b))=
 [1 2 3 4 5 6 7 8]
np.c_[a, b]=
 [[1 5]
 [2 6]
 [3 7]
 [4 8]]

三、 np.vstack和np.r_[]

代码:

# vstack——vertical stack 竖直堆叠
# 注意除了一维数组以外,vstack与r_结果相同,都是竖直堆叠,但是写法有些不一样
import numpy as np

a = np.array([[1, 2],
              [3, 4]])
b = np.array([[5, 6],
              [7, 8]])
print('第一个数组:\n', a)
print('第二个数组:\n', b)

print('水平方向平铺:')
print('np.hstack((a, b))=\n', np.vstack((a, b)))
print('np.c_[a, b]=\n', np.r_[a, b])

print('\n当a,b取一维数组时:')
a = a.flatten()
b = b.flatten()
print('第一个数组:\n', a)
print('第二个数组:\n', b)
print('np.hstack((a, b))=\n', np.vstack((a, b)))
print('np.c_[a, b]=\n', np.r_[a, b])

结果:

第一个数组:
 [[1 2]
 [3 4]]
第二个数组:
 [[5 6]
 [7 8]]
水平方向平铺:
np.hstack((a, b))=
 [[1 2]
 [3 4]
 [5 6]
 [7 8]]
np.c_[a, b]=
 [[1 2]
 [3 4]
 [5 6]
 [7 8]]

当a,b取一维数组时:
第一个数组:
 [1 2 3 4]
第二个数组:
 [5 6 7 8]
np.hstack((a, b))=
 [[1 2 3 4]
 [5 6 7 8]]
np.c_[a, b]=
 [1 2 3 4 5 6 7 8]

如果解决了你的问题,点个赞再走嘛٩(๑❛ᴗ❛๑)۶ 

  • 14
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

若oo尘

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值