Python numpy使用记录6.numpy拼接操作,concatenate,stack,hstack,vstack,c_,h_

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效果相同。

你可能感兴趣的:(python相关学习,numpy,python,开发语言)