如果解决了你的问题,点个赞再走嘛٩(๑❛ᴗ❛๑)۶
如果解决了你的问题,点个赞再走嘛٩(๑❛ᴗ❛๑)۶
由于这五个函数非常类似、用法相近,都是数组的堆叠或平铺,我便总结了一下
目录
一、对应关系与作用叙述
1.np.c_[]和np.r[]都是构造一个分块数组
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]
如果解决了你的问题,点个赞再走嘛٩(๑❛ᴗ❛๑)۶