np.concatenate详解和Numpy中的轴

拟墨画扇 提交于 2019-12-26 06:57:00

np.concatenate和Numpy中的轴

concatenate((a1, a2, ...), axis=0)

沿着指定的轴将指定的数组序列进行拼接
注意:要拼接的原数组形状除了指定的拼接轴可以不同外,其他轴的形状必须都要相同
第一个参数必须是一个多个数组的元组或者列表
第二个参数默认是 axis = 0,即按数组的0轴进行纵向的拼接注:一般axis = 0,就是对该轴向的数组进行操作。

NUMPY ARRAY AXES以’0’开头
NumPy中的数组轴是编号的,从0开始类似于Python中元组,列表,字符串的索引

在Numpy中的函数使用轴

建议:注意轴参数控制的内容
在np.sum(),np.mean(),np.min(),np.median()和其他统计函数会聚合您的数据(即,当您在带有axis参数的二维数组上使用np.sum()时,它会将二维数组折叠为一维数组。它会折叠数据并减少维度)
将Numpy函数与axis参数一起使用时,指定的轴是折叠的轴

np_array_2d = np.arange(0, 6).reshape([2,3])
print(np_array_2d)
[[0 1 2] 
 [3 4 5]]
np.sum(np_array_2d, axis = 0)
输出:array([3, 5, 7])

当我们设置axis = 0时,该函数实际上对列进行求和
正如我之前提到的,axis参数指示哪个轴折叠。

当我们设置axis = 0时,我们不会对行进行求和;我们正在聚合数据,以便我们折叠行…我们将轴0折叠。

当我们将axis参数与np.concatenate()函数一起使用时,axis参数定义了我们堆叠数组的轴

np_array_1s = np.array([[1,1,1],[1,1,1]])
np_array_9s = np.array([[9,9,9],[9,9,9]])

array([[1, 1, 1],
       [1, 1, 1]])

array([[9, 9, 9],
       [9, 9, 9]])

#*use NumPy concatenate with axis = 0*
np.concatenate([np_array_1s, np_array_9s], axis = 0)
#输出
array([[1, 1, 1],
       [1, 1, 1],
       [9, 9, 9],
       [9, 9, 9]])

在这里插入图片描述

#*use NumPy concatenate with axis = 1*
np.concatenate([np_array_1s, np_array_9s], axis = 1)
#输出
array([[1, 1, 1, 9, 9, 9],
       [1, 1, 1, 9, 9, 9]])

在这里插入图片描述
警告:1维阵列的工作方式不同
一维NUMPY数组只有一个轴(即axis=0)
在这里插入图片描述

np_array_1s_1dim = np.array([1,1,1])
np_array_9s_1dim = np.array([9,9,9])

[1 1 1]
[9 9 9]

np.concatenate([np_array_1s_1dim, np_array_9s_1dim], axis = 0)

array([1, 1, 1, 9, 9, 9])

这与函数在二维数组上的工作方式不同。如果我们在二维数组上使用np.concatenate()和axis = 0,则数组将垂直连接在一起。

在这种情况下,该功能正常工作。NumPy连接是沿着轴0连接这些数组。在1-d数组中,轴0不像在2维数组中那样指向“向下”。

np.concatenate([np_array_1s_1dim, np_array_9s_1dim], axis = 1)

IndexError: axis 1 out of bounds [0, 1)

概括:Numpy轴是我们执行操作的方向
参考:https://www.jianshu.com/p/f4e9407f9f9d

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!