Python numpy使用记录6.几种行列操作,concatenate,stack,hstack,vstack,c_,h_
前言
- 前言
- 示例代码
- api解释
本篇记录一下numpy中常用的几种拼接方法。
示例代码直接上示例:
import numpy as np
a=np.array([[1,2,3], [4,5,6]])
b=np.array([[7,8,9], [10,11,12]])
c=np.concatenate([a,b], axis=0)
d=np.concatenate([a,b], axis=1)
e=np.stack([a,b], axis=0)
f=np.stack([a,b], axis=1)
g=np.stack([a,b], axis=2)
h=np.hstack([a,b])
i=np.vstack([a,b])
j=np.c_[a,b]
k=np.r_[a,b]
'''
c
[[ 1 2 3]
[ 4 5 6]
[ 7 8 9]
[10 11 12]]
d
[[ 1 2 3 7 8 9]
[ 4 5 6 10 11 12]]
e
[[[ 1 2 3]
[ 4 5 6]]
[[ 7 8 9]
[10 11 12]]]
f
[[[ 1 2 3]
[ 7 8 9]]
[[ 4 5 6]
[10 11 12]]]
g
[[[ 1 7]
[ 2 8]
[ 3 9]]
[[ 4 10]
[ 5 11]
[ 6 12]]]
h
[[ 1 2 3 7 8 9]
[ 4 5 6 10 11 12]]
i
[[ 1 2 3]
[ 4 5 6]
[ 7 8 9]
[10 11 12]]
j
[[ 1 2 3 7 8 9]
[ 4 5 6 10 11 12]]
k
[[ 1 2 3]
[ 4 5 6]
[ 7 8 9]
[10 11 12]]
'''
api解释
拼接操作要求数组shape相同,以列表[a,b]或者元组(a,b)作为参数。
下面简要分析: np.concatenate用于数组a,b拼接,拼接结果c,d数组dim=2,与用于拼接的a,b数组dim相同,直观的看像是把数组b的某个维度的元素塞到a对应的维度中。
np.stack用于a,b堆叠,堆叠结果e,f,g数组dim=3,多了一维。直观看是把数组a,b对应的axis用括号括起来。比如axis=1,就是把a,b的第一行括起来,第二行括起来,axis=1表示按行堆叠。
np.hstack用于横向堆叠,效果与np.concatenate([a, b], axis=1)效果相同,沿着第二维拼接。 np.vstack用于纵向堆叠,效果与np.concatenate([a, b], axis=0)效果相同,沿着第一维拼接;如果a,b是一维shape=(N,),则先添加a,b维度到shape=(1, N)再拼接,与np.stack([a, b], axis=0)相同 np.c_
np.r_[]用于行堆叠,与np.hstack效果相同。 np.c_[]用于列堆叠,与np.vstack效果相同。
