📜  在 NumPy 中拆分数组(1)

📅  最后修改于: 2023-12-03 15:07:44.931000             🧑  作者: Mango

在 NumPy 中拆分数组

在数据科学和机器学习中,我们经常需要按照某些标准来拆分数组。NumPy是一个Python科学计算包,它提供了许多方法来拆分数组。

我们将在本文中介绍如何使用NumPy拆分数组。涵盖的主题如下:

  1. 拆分数组的方法

  2. 如何拆分数组

  3. 示例代码

拆分数组的方法

NumPy提供了两种方法来拆分数组,分别是水平切割和垂直切割。

水平切割是将数组水平地分成几个部分。

垂直切割是将数组垂直地分成几个部分。

如何拆分数组
水平切割

要按水平方向拆分数组,我们需要使用numpy.hsplit()方法。它接受两个参数:

  1. 要拆分的原始数组

  2. 要拆分成的“份数”,即要将数组分成几个部分。

例如,如果要将一个形为(3, 6)的数组分成两个部分,则可以执行以下操作:

import numpy as np

arr = np.arange(18).reshape(3,6)
split_arr = np.hsplit(arr, 2)

在这个例子中,我们将数组切成了两个等大小的部分,并将结果存储在split_arr变量中。

垂直切割

要按垂直方向拆分数组,我们需要使用numpy.vsplit()方法。它接受两个参数:

  1. 要拆分的原始数组

  2. 要拆分成的“份数”,即要将数组分成几个部分。

例如,如果要将一个形为(6, 3)的数组分成两个部分,则可以执行以下操作:

import numpy as np

arr = np.arange(18).reshape(6,3)
split_arr = np.vsplit(arr, 2)

在这个例子中,我们将数组切成了两个等大小的部分,并将结果存储在split_arr变量中。

示例代码

下面是一个完整的示例代码,展示了如何在NumPy中拆分数组。

import numpy as np

# 水平分割示例
arr1 = np.arange(18).reshape(3,6)
split_arr1 = np.hsplit(arr1, 2)
print("拆分前原始数组:")
print(arr1)
print("水平分割后结果数组:")
print(split_arr1)

# 垂直分割示例
arr2 = np.arange(18).reshape(6,3)
split_arr2 = np.vsplit(arr2, 2)
print("拆分前原始数组:")
print(arr2)
print("垂直分割后结果数组:")
print(split_arr2)

输出结果为:

拆分前原始数组:
[[ 0  1  2  3  4  5]
 [ 6  7  8  9 10 11]
 [12 13 14 15 16 17]]
水平分割后结果数组:
[array([[ 0,  1,  2],
       [ 6,  7,  8],
       [12, 13, 14]]), array([[ 3,  4,  5],
       [ 9, 10, 11],
       [15, 16, 17]])]
拆分前原始数组:
[[ 0  1  2]
 [ 3  4  5]
 [ 6  7  8]
 [ 9 10 11]
 [12 13 14]
 [15 16 17]]
垂直分割后结果数组:
[array([[0, 1, 2],
       [3, 4, 5],
       [6, 7, 8]]), array([[ 9, 10, 11],
       [12, 13, 14],
       [15, 16, 17]])]

在这个示例代码中,我们首先使用numpy.hsplit()方法将一个数组切成了两个等大小的部分,然后使用numpy.vsplit()方法将另一个数组切成了两个等大小的部分。最后,我们打印了原始数组和拆分后的结果数组。