NumPy split()
方法将一个数组分割成多个子数组。
示例
import numpy as np
# create a 1-D array
array1 = np.array([0, 1, 2, 3])
# split into two equal length sub-arrays
subArrays= np.split(array1, 2)
print(subArrays)
'''
Output: [array([0, 1]), array([2, 3])]
'''
split() 语法
split()
的语法是
numpy.split(array, indices_or_sections, axis = 0)
split() 参数
split()
方法接受以下参数
array
- 要分割的数组indices
- 定义分割数组的索引(可以是int
或1-D array
)axis
(可选) - 分割数组的轴
注意事项
- 如果
indices
是一个整数(N),则数组被分成 N 个相等的部分。- 如果无法进行 N 次相等分割,则会引发错误。
- 如果
indices
是一个 1-D 数组,则条目指示输入数组被分割的索引。
split() 返回值
split()
方法返回子数组列表。
示例 1:将数组分割成三个数组
import numpy as np
array1 = np.array( [[1, 2], [3, 4], [5, 6]] )
# split into 3 arrays
splitArrays = np.split(array1, 3)
print(splitArrays)
输出
[array([[1, 2]]), array([[3, 4]]), array([[5, 6]])]
示例 2:按索引分割数组
import numpy as np
array1 = np.array( [1, 2, 3, 4, 5, 6] )
# indices at which array is split
splitIndices = [2, 5, 8]
# split into subarrays
splitArrays = np.split(array1, splitIndices)
print(splitArrays)
输出
[array([1, 2]), array([3, 4, 5]), array([6]), array([], dtype=int64)]
当索引超出数组的维度时,函数将返回一个空子数组。
示例 3:跨不同轴分割数组
第三个参数用于跨不同轴分割 NumPy 数组。默认情况下,axis
设置为 0(按列)。
import numpy as np
# create a 3D array
array1 = np.array([[[1, 2], [3, 4]],
[[5, 6], [7, 8]]])
# split the array column-wise (axis = 0 by default)
splitArrays = np.split(array1, 2)
print("\nSplit array column-wise:")
print(splitArrays)
# split the array row-wise
splitArrays = np.split(array1, 2, axis = 1)
print("Split array row-wise:")
print(splitArrays)
# split the array depth-wise
splitArrays = np.split(array1, 2, axis = 2)
print("\nSplit array depth-wise:")
print(splitArrays)
输出
Split array column-wise: [array([[[1, 2], [3, 4]]]), array([[[5, 6], [7, 8]]])] Split array row-wise: [array([[[1, 2]], [[5, 6]]]), array([[[3, 4]], [[7, 8]]])] Split array depth-wise: [array([[[1], [3]], [[5], [7]]]), array([[[2], [4]], [[6], [8]]])] >
示例 4:将数组分割成不均匀的子数组
split()
函数无法将数组分割成不均匀的数组。
import numpy as np
array1 = np.array( [[1, 2], [3, 4], [5, 6]] )
# split into 2 arrays
splitArrays = np.split(array1, 2)
print(splitArrays)
输出
ERROR! raise ValueError( ValueError: array split does not result in an equal division
要将数组分割成不相等的子数组,您可以使用 array_split()
代替。让我们看一个例子。
import numpy as np
array1 = np.array( [[1, 2], [3, 4], [5, 6]] )
# split into 2 arrays
splitArrays = np.array_split(array1, 2)
for array in splitArrays:
print(array,'\n')
输出
[[1 2] [3 4]] [[5 6]]
相关方法
我们还可以使用以下方法沿不同轴分割数组
- NumPy
hsplit()
- 水平分割数组成多个子数组 - NumPy
vsplit()
- 垂直分割数组成多个子数组 - NumPy
dsplit()
- 沿第三轴(深度)分割数组成多个子数组
让我们看一个例子。
import numpy as np
# create a 3D array
array1 = np.array([[[1, 2], [3, 4]],
[[5, 6], [7, 8]]])
# split the array column-wise
splitArrays = np.vsplit(array1, 2)
print("\nSplit array column-wise:")
for arr in splitArrays:
print(arr)
# split the array row-wise
splitArrays = np.hsplit(array1, 2)
print("Split array row-wise:")
for arr in splitArrays:
print(arr)
# split the array depth-wise
splitArrays = np.dsplit(array1, 2)
print("\nSplit array depth-wise:")
for arr in splitArrays:
print(arr)
输出
Split array column-wise: [[[1 2] [3 4]]] [[[5 6] [7 8]]] Split array row-wise: [[[1 2]] [[5 6]]] [[[3 4]] [[7 8]]] Split array depth-wise: [[[1] [3]] [[5] [7]]] [[[2] [4]] [[6] [8]]]