numpy基础--7.array分割

该博客演示了如何使用numpy库中的split函数对二维数组进行行和列方向的分割。通过示例,解释了当尝试不均匀分割时会引发错误,并展示了如何进行不等分割。此外,还提到了垂直分割(vsplit)和水平分割(hsplit)的用法。
摘要由CSDN通过智能技术生成
import numpy as np
arr1 = np.arange(12).reshape((3,4))
print(arr1)
out:
[[ 0  1  2  3]
 [ 4  5  6  7]
 [ 8  9 10 11]]
arr2,arr3 = np.split(arr1,2,axis=1)#列方向分割,分成两份
print(arr2)
print(arr3)
out:
[[0 1]
 [4 5]
 [8 9]]
[[ 2  3]
 [ 6  7]
 [10 11]]
arr4,arr5,arr6 = np.split(arr1,3,axis=0)#行方向分割,分成三份
print(arr4)
print(arr5)
print(arr6)
out:
[[0 1 2 3]]
[[4 5 6 7]]
[[ 8  9 10 11]]
arr2,arr3,arr4 = np.split(arr1,3,axis=1)#水平方向分割,分成3份,无法平均分,报错
print(arr2)
print(arr3)
out:
---------------------------------------------------------------------------
TypeError                                 Traceback (most recent call last)
~\Anaconda3\lib\site-packages\numpy\lib\shape_base.py in split(ary, indices_or_sections, axis)
    849     try:
--> 850         len(indices_or_sections)
    851     except TypeError:

TypeError: object of type 'int' has no len()

During handling of the above exception, another exception occurred:

ValueError                                Traceback (most recent call last)
<ipython-input-11-f4daeef50d00> in <module>()
----> 1 arr2,arr3,arr4 = np.split(arr1,3,axis=1)#水平方向分割,分成两份
      2 print(arr2)
      3 print(arr3)

<__array_function__ internals> in split(*args, **kwargs)

~\Anaconda3\lib\site-packages\numpy\lib\shape_base.py in split(ary, indices_or_sections, axis)
    854         if N % sections:
    855             raise ValueError(
--> 856                 'array split does not result in an equal division')
    857     res = array_split(ary, indices_or_sections, axis)
    858     return res

ValueError: array split does not result in an equal division
arr7,arr8,arr9 = np.array_split(arr1,3,axis=1)#列方向分割,分成三份,不等分割
print(arr7)
print(arr8)
print(arr9)
out:
[[0 1]
 [4 5]
 [8 9]]
[[ 2]
 [ 6]
 [10]]
[[ 3]
 [ 7]
 [11]]
arrv1,arrv2,arrv3 = np.vsplit(arr1,3)#垂直分割
print(arrv1)
print(arrv2)
print(arrv3)
out:
[[0 1 2 3]]
[[4 5 6 7]]
[[ 8  9 10 11]]
arrv4,arrv5 = np.hsplit(arr1,2)#水平分割
print(arrv4)
print(arrv5)
out:
[[0 1]
 [4 5]
 [8 9]]
[[ 2  3]
 [ 6  7]
 [10 11]]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值