分割数组
NumPy 的 Split 方法能根据指定的条件,将一个数组分割成数个数组,这篇教学将会介绍 NumPy 里分割数组的做法。
本篇使用的 Python 版本为 3.7.12,所有范例可使用 Google Colab 实作,不用安装任何软件 ( 参考:使用 Google Colab )
分割数组项目的方法
NumPy 有下列几种分割数组项目的方法:
| 方法 | 参数 | 说明 |
|---|---|---|
| numpy.split()、numpy.array_split() | arr, num | 分割数组,返回指定数量的新数组。 |
| numpy.hsplit() | arr, num | 水平分割数组,返回指定数量的新数组。 |
| numpy.vsplit() | arr, num | 垂直分割数组,返回指定数量的新数组。 |
numpy.split()、numpy.array_split()
numpy.split()、numpy.array_split() 会分割数组,返回指定数量的新数组,第一个参数 arr 为原本的数组,第二个参数为要分割的数量,也可以设定第三个参数,0 为水平分割 ( 默认 ) 或 1 为垂直分割。
注意,numpy.split 的分割数值必须可以让原始数组所整除,不然会发生错误。
下方的程序会将原本的数组,分割成三个新数组。
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]])]
微信扫码关注
抖音扫码关注