数组的级联和分割

import numpy as np

级联

concatenate 方法

需要将多个数组拼接成一个数组成为一个元组以参数的形式传入
concatenate可以指定数组的拼接方向,默认是0轴也就是垂直方向拼接,可以通过修改axis参数,让数组水平方向拼接
concatenate 对拼接的数组的形状有一定的要求----如果是水平方向拼接 需要行数相等--如果是垂直方向拼接 则需要列数相等
a = np.random.randint(2, 10, size=(2,4))
b = np.random.randint(2, 100, size=(2,4))
print(a, b, sep='\n')

#[[4 5 4 2]
# [2 8 5 8]]

#[[60 50 74 69]
# [34 11 38 87]]
np.concatenate((a, b))

#array([[ 4,  5,  4,  2],
#       [ 2,  8,  5,  8],
#       [60, 50, 74, 69],
#       [34, 11, 38, 87]])

np.concatenate((a, b), axis=1) 
#横向拼接 调参数axis=1(默认为0 纵向)

#array([[ 4,  5,  4,  2, 60, 50, 74, 69],
#       [ 2,  8,  5,  8, 34, 11, 38, 87]])

stack 方法

会提升维度
也可以指定轴进行拼接
np.stack((a,b))
#升了一个维度  把要连接的数组重新放进一个新的大数组 所以会升维

#array([[[ 4,  5,  4,  2],
#        [ 2,  8,  5,  8]],
#
#       [[60, 50, 74, 69],
#        [34, 11, 38, 87]]])

#也可以横向拼接  设置参数 axis=1(默认还是0)
np.stack((a,b), axis=1)

#array([[[ 4,  5,  4,  2],
#        [60, 50, 74, 69]],
#
#       [[ 2,  8,  5,  8],
#        [34, 11, 38, 87]]])

hstack 方法

不会提升维度
是水平方向级联
等价于  np.concatenate((a,b), axis=1)
np.hstack((a,b))

#array([[ 4,  5,  4,  2, 60, 50, 74, 69],
#       [ 2,  8,  5,  8, 34, 11, 38, 87]])

vstack 方法

不一定会提升维度-----如果数组是一维数组  会提升为二维数组
如果不提升维度等价于  np.concatenate((a,b))  是垂直方向级联
np.vstack((a, b))

#array([[ 4,  5,  4,  2],
#       [ 2,  8,  5,  8],
#       [60, 50, 74, 69],
#       [34, 11, 38, 87]])

分割

split 方法 可以传入一个数字,表示切割成多少份.还可以传入一个一维数组,
用来表示分割时的下标,得到的结果是一个列表,列表里每一个元素都是一个数组 

hsplit 等价于split(axis=1) , vsplit等价于split(axis=0) 等价于split
a = np.random.randint(3, 40, size=(10,4))
#array([[20, 19,  5, 21],
#       [21, 24, 35, 11],
#       [ 4, 13, 28, 39],
#       [22, 13, 30, 30],
#       [ 7, 11, 21,  9],
#       [27,  9, 30, 35],
#       [24,  9, 11, 23],
#       [36, 13, 36, 34],
#       [31, 36, 34, 34],
#       [14, 19,  7, 27]])
np.split(a,2)  # 切割成两份

#[array([[20, 19,  5, 21],
#        [21, 24, 35, 11],
#        [ 4, 13, 28, 39],
#        [22, 13, 30, 30],
#        [ 7, 11, 21,  9]]),
# array([[27,  9, 30, 35],
#        [24,  9, 11, 23],
#        [36, 13, 36, 34],
#        [31, 36, 34, 34],
#        [14, 19,  7, 27]])]

np.split(a,[2,4])  #相当于按照 [0,2) [2,4) [4,)  左闭右开

#[array([[20, 19,  5, 21],
#        [21, 24, 35, 11]]),
# array([[ 4, 13, 28, 39],
#        [22, 13, 30, 30]]),
# array([[ 7, 11, 21,  9],
#        [27,  9, 30, 35],
#        [24,  9, 11, 23],
#        [36, 13, 36, 34],
#        [31, 36, 34, 34],
#        [14, 19,  7, 27]])]
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值