NumPy 分割数组

分割 NumPy 数组

分割是连接的逆操作。

连接将多个数组合并为一个,而分割将一个数组拆分为多个。

我们使用 array_split() 来分割数组,将要分割的数组和分割的数量传递给它。

实例

将数组分割成 3 部分:

import numpy as np

arr = np.array([1, 2, 3, 4, 5, 6])

newarr = np.array_split(arr, 3)

print(newarr)

亲自试一试

注意:返回值是一个包含三个数组的列表。

如果数组的元素少于所需数量,它将从末尾进行相应调整。

实例

将数组分割成 4 部分:

import numpy as np

arr = np.array([1, 2, 3, 4, 5, 6])

newarr = np.array_split(arr, 4)

print(newarr)

亲自试一试

注意:我们还提供了 split() 方法,但是当源数组中的元素不足以进行分割时(如上面的示例),它不会调整元素,array_split() 可以正常工作,但 split() 会失败。

分成数组

array_split() 方法的返回值是一个数组,其中包含每个分割作为数组。

如果你将一个数组分割成 3 个数组,你可以像访问任何数组元素一样从结果中访问它们:

实例

访问分割后的数组:

import numpy as np

arr = np.array([1, 2, 3, 4, 5, 6])

newarr = np.array_split(arr, 3)

print(newarr[0])
print(newarr[1])
print(newarr[2])

亲自试一试

分割二维数组

分割二维数组时使用相同的语法。

使用 array_split() 方法,传入你想要分割的数组和你想要分割的数量。

实例

将二维数组分割成三个二维数组。

import numpy as np

arr = np.array([[1, 2], [3, 4], [5, 6], [7, 8], [9, 10], [11, 12]])

newarr = np.array_split(arr, 3)

print(newarr)

亲自试一试

上面的示例返回三个二维数组。

让我们看另一个例子,这次二维数组中的每个元素包含 3 个元素。

实例

将二维数组分割成三个二维数组。

import numpy as np

arr = np.array([[1, 2, 3], [4, 5, 6], [7, 8, 9], [10, 11, 12], [13, 14, 15], [16, 17, 18]])

newarr = np.array_split(arr, 3)

print(newarr)

亲自试一试

上面的示例返回三个二维数组。

此外,您还可以指定要围绕哪个轴进行分割。

下面的示例也返回三个二维数组,但它们沿行(axis=1)分割。

实例

沿着行将二维数组分割成三个二维数组。

import numpy as np

arr = np.array([[1, 2, 3], [4, 5, 6], [7, 8, 9], [10, 11, 12], [13, 14, 15], [16, 17, 18]])

newarr = np.array_split(arr, 3, axis=1)

print(newarr)

亲自试一试

另一种解决方案是使用 hsplit(),与 hstack() 相反。

实例

使用 hsplit() 方法沿着行将二维数组分割成三个二维数组。

import numpy as np

arr = np.array([[1, 2, 3], [4, 5, 6], [7, 8, 9], [10, 11, 12], [13, 14, 15], [16, 17, 18]])

newarr = np.hsplit(arr, 3)

print(newarr)

亲自试一试

注意:vstack()dstack() 类似的替代方法是 vsplit()dsplit()