Python NumPy(九)拆分数组


拆分 NumPy 数组

Splitting 是 Joining 的逆操作。

Join 将多个数组合并为一个,Splitting 将一个数组分成多个。

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

例子

将数组拆分为 3 部分:

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

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

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

例子

将数组拆分为 4 部分:

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

 
[array([1, 2]), array([3, 4]), array([5]), array([6])]

拆分二维数组

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

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

例子

将二维数组拆分为三个二维数组。

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

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

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

例子

将二维数组拆分为三个二维数组。

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) 拆分。

将二维数组沿行拆分为三个二维数组。

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

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

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

例子

使用该hsplit()方法将二维数组沿行拆分为三个二维数组.

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)

 
[array([[ 1],
       [ 4],
       [ 7],
       [10],
       [13],
       [16]]), array([[ 2],
       [ 5],
       [ 8],
       [11],
       [14],
       [17]]), array([[ 3],
       [ 6],
       [ 9],
       [12],
       [15],
       [18]])]
注意:vstack()和 的类似替代dstack()项可用作 vsplit()和 dsplit()
转载于:
https://www.w3schools.com/python/numpy/numpy_array_split.asp


免责声明!

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系本站邮箱yoyou2525@163.com删除。



 
粤ICP备18138465号  © 2018-2025 CODEPRJ.COM