- 方法 1:np.concatenate
- 方法 2:np.vstack 和 np.hstack
- 方法 3:np.r_ 和 np.c_
所有的三种方法都会提供相同的输出。
需要注意的一个关键区别是与其他两种方法不同,np.r_和np.c_都用方括号来堆叠数组。
np.concatenate((a1,a2,...), axis=0, out=None)
Join a sequence of arrays along an existing axis.
沿着给定的(axis=0 by default)axis加入一系列数组
参数:
- a1,a2,... : 相同shape的一系列数组
- axis : 数组将要连接的axis,默认为0
a = np.array([[1, 2], [3, 4]])
b = np.array([[5, 6]])
np.concatenate((a, b), axis=0)
> array([[1, 2],
[3, 4],
[5, 6]])
np.concatenate((a, b.T), axis=1)
> array([[1, 2, 5], bjknjk6fg67
[3, 4, 6]])
np.concatenate((a, b), axis=None)
> array([1, 2, 3, 4, 5, 6])
np.hstack()
Stack arrays in sequence horizontally(column wise).
沿水平方向堆叠数组。
a = np.array((1,2,3))
b = np.array((2,3,4))
np.hstack((a,b))
> array([1, 2, 3, 2, 3, 4])
a = np.array([[1],[2],[3]])
b = np.array([[2],[3],[4]])
np.hstack((a,b))
> array([[1, 2],
[2, 3],
[3, 4]])
np.vstack()
Stack arrays in sequence vertically (row wise).
沿垂直方向堆叠数组。
a = np.array([1, 2, 3])
b = np.array([4, 5, 6])
np.vstack((a, b))
> array([[1, 2, 3],
[4, 5, 6]])
a = np.array([[1], [2], [3]])
b = np.array([[2], [3], [4]])
np.vstack((a,b))
> array([[1],
[2],
[3],
[2],
[3],
[4]])
np.r_
Translates slice objects to concatenation along the first axis.
There are two use cases.
- If the index expression contains comma separated arrays, then stack them along their first axis.
- If the index expression contains slice notation or scalars then create a 1-D array with a range indicated by the slice notation.
按行叠加矩阵或者切片对象。
两种用法:
- 如果索引包含逗号分隔的数组,则按行叠加
- 如果索引包含切片表示或者标量, 则创建一个切片表示指示范围的一维数组
如果使用第二种用法,切片表示的语法为(start:stop:step)。但是,如果step是虚数(i.e. 100j),那么整数部分可以解读为所需的点数,而且包含start和stop。
np.r_[np.array([1,2,3]), 0, 0, np.array([4,5,6])]
> array([1, 2, 3, 0, 0, 4, 5, 6])
np.r_[-1:1:6j, [0]*3, 5, 6]
> array([-1. , -0.6, -0.2, 0.2, 0.6, 1. , 0. , 0. , 0. , 5. , 6. ])
np.c_
按列叠加矩阵。
np.c_[np.array([1,2,3]), np.array([4,5,6])]
> array([[1, 4],
[2, 5],
[3, 6]])
np.c_[np.array([[1,2,3]]), 0, 0, np.array([[4,5,6]])]
> array([[1, 2, 3, 0, 0, 4, 5, 6]])
网友评论