9 分割数组

3 阅读2分钟

Numpy 的 Split 方法能根据指定的条件,将一个数组分割成多个数组

分割方式

NumPy 有下列几种分割数组元素的方法:

方法参数说明
numpy.split()、numpy.array_split()num,arr分割数组,返回指定数量的新数组。
numpy.hsplit()arr, num水平分割数组,返回指定数量的新数组。
numpy.vsplit()arr, num垂直分割数组,返回指定数量的新数组。

numpy.split()、numpy.array_split()

numpy.split()、numpy.array_split()会分割数组,返回指定数量的新数组,第一个参数 arr 维度原本的数组,第二个参数为要分割的数量,也可以设置第三个参数,0 为水平分割,1 为垂直分割。

(numpy.split() 分割的数值,一定能让原始数组的原始数量整除 比如:数组有 10 个元素,你分割数组 是 3,不能整除,肯定报错)

import numpy as np

a = np.array([1,2,3,4,5,6])
b = np.array_split(a, 3)
c = np.split(a, 3)
print(b)  # [array([1, 2]), array([3, 4]), array([5, 6])]
print(c)  # [array([1, 2]), array([3, 4]), array([5, 6])]

下方会将一个二维数组,按照水平或垂直分割的设置,分割成两个新数组( 因为数量无法整除,所以不能使用 numpy.split()

import numpy as np

a = np.array([[1,2],[3,4],[5,6]])
b = np.array_split(a, 2)
c = np.array_split(a, 2, 1)

print(b)  # [array([[1, 2],[3, 4]]), array([[5, 6]])]
print(c)  # [array([[1],[3],[5]]), array([[2],[4],[6]])]

numpy.hsplit()

numpy.hsplit() 会水平分割数组,返回指定数量的新数组 ( 若原本数组的元素数量,无法整除分割数量,会发生错误)

import numpy as np

a = np.array([[1,1,1],[2,2,2],[3,3,3]])
b = np.hsplit(a, 3)
print(b)  # [array([[1],[2],[3]]), array([[1],[2],[3]]), array([[1],[2],[3]])]

numpy.vsplit()

numpy.vsplit 会垂直分割数组,返回指定数量的新数组 ( 若原本数组的元素数量,无法整除分割数量,会发生错误 )。

import numpy as np

a = np.array([[1,1,1],[2,2,2],[3,3,3]])
b = np.vsplit(a, 3)
print(b)   # [array([[1, 1, 1]]), array([[2, 2, 2]]), array([[3, 3, 3]])]