np.split(ary, indices_or_sections, axis=0)

函数功能:

把一个数组从左到右按顺序切分

参数:

ary:要切分的数组

indices_or_sections:如果是一个整数,就用该数平均切分,如果是一个数组,为沿轴切分的位置

axis:沿着哪个维度进行切向,默认为0,横向切分

先来看一下一维数组的情况

import numpy as np

x = np.array([0,1,2,3,4,5,6,7,8])
print (np.split(x,3))
print (np.split(x,[3,5,6,9]))
print(np.split(x,[3,5,6,8]))
输出:
[array([0, 1, 2]), array([3, 4, 5]), array([6, 7, 8])]
[array([0, 1, 2]), array([3, 4]), array([5]), array([6, 7, 8]), array([], dtype=int32)]
[array([0, 1, 2]), array([3, 4]), array([5]), array([6, 7]), array([8])]

很明显,因为一维数组只有一个维度,所以切分只会在这一个维度进行。第一行输出对应indices_or_sections参数为一个整数,将数组平均分成了三份,第二行输出对应indices_or_sections参数为一个数组,此时每一次切分都会将要切分数组的前n(n=3,5,6,9)个元素切分出来,第一次n=3,进行数组切分得到array([0, 1, 2]),第二次n=5,进行数组切分得到array([3, 4]),此时数组前5个元素已经切分完毕,后续同理,最后一次n=9,切分完毕后数组所有元素已经被切分,所以最后一个array为array([], dtype=int32),对比第三行输出可以看出区别。

二维数组与一位数组情况基本相同

import numpy as np

a = np.array([[1,2,3],
     [1,2,5],
     [4,6,7]])
print (np.split(a, [2, 3],axis = 0))
print (np.split(a, [1, 2],axis = 1))
输出:
[array([[1, 2, 3],
       [1, 2, 5]]), array([[4, 6, 7]]), array([], shape=(0, 3), dtype=int32)]
[array([[1],
       [1],
       [4]]), array([[2],
       [2],
       [6]]), array([[3],
       [5],
       [7]])]

Logo

为开发者提供学习成长、分享交流、生态实践、资源工具等服务,帮助开发者快速成长。

更多推荐