NumPy split()

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 - 定义分割数组的索引(可以是 int1-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]]]

我们的高级学习平台,凭借十多年的经验和数千条反馈创建。

以前所未有的方式学习和提高您的编程技能。

试用 Programiz PRO
  • 交互式课程
  • 证书
  • AI 帮助
  • 2000+ 挑战