numpy——数组的切割操作(hsplit()、vsplit()、split()、array_split())

这篇博客详细介绍了numpy库中用于数组切割的四个函数:hsplit()、vsplit()、split()和array_split()。hsplit和vsplit分别沿横向和纵向切割数组,split则根据axis参数实现水平或垂直切割,但要求均等分。array_split允许不均等切割,根据指定的块数进行近似均匀切割。在机器学习场景中,split常用于按列分割数据集。示例代码和应用场景帮助理解这些函数的使用方法。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

hsplit():沿横轴(纵向)拆分原array。可以实现均匀切割或者指定位置切割。(水平切割)
vsplit():沿垂直轴切割原array。同上。(垂直切割)
split():通过参数axis=1或者axis=0(默认axis=0)可以实现水平切割或者垂直切割。split必须要均等分.
array_split():通过参数axis=1或者axis=0可以实现水平切割或者垂直切割。array_split()强制切割,指定切割后的数目实现近似均匀切割

注意:np.array_split 和np.split(),这两个函数的唯一区别是 split() 必须是等分,否则会抛出异常:ValueError: array split does not result in an equal division。

以下面的两行三列的二维数组和两行两列的二维数组为例

import numpy as np
#生成要拆分的两个数组
array1=np.arange(6).reshape(2,3)
array2=np.arange(4).reshape(2,2)
print('array1:')
print(array1)
print("array2:")
print(array2)

在这里插入图片描述

(1)hsplit()用法(vsplit()类似)

#np.hsplit(ary, indices_or_sections) 将数组水平拆分为多个子数组(按列)——>按列拆分。
#np.hsplit(ary, indices_or_sections) 将数组水平拆分为多个子数组(按列)——>按列拆分。
#Split an array into multiple sub-arrays horizontally (column-wise).
#指定分割后数组的个数,实现均匀分割
#输出结果为列表,列表中元素为数组。
#print(np.hsplit(array1,2)) #会报错,因为没办法均匀分割
ar = np.hsplit(array2,2) #不会报错,成功分割为两个数组
print('ar:')
print(ar) 
print('array2:')
print(array2) #array2不变
print('np.hsplit(array2,2)[0]')
print(np.hsplit(array2,2)[0])

在这里插入图片描述

ar1 = np.hsplit(array1,(1,3))#传入的是元组
ar2 = np.hsplit(array1,(0,2))#注意观察三个的输出结果
ar3 = np.hsplit(array1,(1,0))
print('ar1:')
print(ar1)
print("ar2:")
print(ar2)
print('ar3:')
print(ar3)

在这里插入图片描述

(2)split()

#np.split(ary, indices_or_sections, axis=0)
#Split an array into multiple sub-arrays。
#生成列表,列表中元素是数组
ar = np.split(array1,3,axis=1)
print(ar)
#若写成np.split(array1,2,axis=1)则会报错,因为沿按列无法均匀分割成两份

在这里插入图片描述

split用法补充(一维数组split以及机器学习中的用法)

以一行六列的二维数组和一个包含六个元素的一维数组为例

array3=np.arange(6).reshape(1,6)#一行六列的二维数组
print(np.split(array3,2,axis=1))
#print(np.split(array3,2))会报错,因为默认axis=0

在这里插入图片描述

array4=np.arange(6) #一维数组
print(type(array4))
print(np.split(array4,2,axis=0))
#print(np.split(array4,2,axis=1))会报错

在这里插入图片描述
机器学习中常用方法:

m = np.arange(6.0)
n = np.split(m, (3,)) #3代表位置
print(n)

在这里插入图片描述

m = np.arange(6.0)
n = np.split(m, 3)#3代表分几份
print(n)

在这里插入图片描述

机器学习中的用法解释:
x, y = np.split(data, (3,), axis=1)
#axis=1,代表列,是要把data数据集中的所有数据按第三、四列之间分割为X集和Y集。(data一般为二维数组)

(3)array_split()

对于一个长度为 L 的数组,该函数是这么拆的:前 L % n 个组的大小是 L // n + 1,剩下组的大小是 L // n。 其中 // 表示下取整(即 np.floor()),n代表划分后数组的个数

#np.array_split(ary, indices_or_sections, axis=0)
#Split an array into multiple sub-arrays.

#生成要组合的两个数组
array1=np.arange(14).reshape(2,7)

ar = np.array_split(array1,2,axis=1)#按列分割成两份。此处若用np.split则会报错。
print(ar)

在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值