python np.split函数

  • Post category:Python

针对Python中numpy模块的split函数,我来给您详细讲解一下。

np.split函数介绍

官方文档描述为:numpy.split(ary, indices_or_sections, axis=0)。其功能为将一个ndarray数组切割成若干个子数组。其中,ary为待切割数组,indices_or_sections为切割位置,在不指定axis时默认为沿着第一维切割。

参数说明

  • ary: 被切割的数组;
  • indices_or_sections: 如果是一个整数,将会把数组平均分成多少块,例如3;相反,如果是一个list则表示具体需要分成怎样的几个部分,例如[1, 3, 5, 7],每部分是多长;
  • axis=0: 使用的轴的下标。

需要注意的是,切割后返回的是一个Python列表,其中每个元素是一个ndarray数组。

np.split函数的使用

以下是两个不同的示例:

示例1

本例中,我们将对一个长度为6的数组进行切割。这里我们有两种切割方案,一种是沿第一个维度等分为3份,另一种是将它分别在2和4处切开。代码实现如下:

import numpy as np

# 新建一个数组,长度为6
x = np.arange(6)

# 沿着第一个维度,将数组分割成长度为2的3段
cols = np.split(x, 3)
print(cols)

# 沿着第一个维度,将数组在2和4位置分别切开
cols2 = np.split(x, [2, 4])
print(cols2)

输出结果:

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

我们可以看到,当传入整数3时,数组被切割成了长度为2的三份;当传入[2, 4]时,则是在第2和第4个位置将数组切割开,分成了三份。

示例2

在这个例子中,我们将对一个二维数组进行切割。这里我们沿着第二个维度将其分成2份。代码如下:

import numpy as np

# 新建一个二维数组
y = np.random.randint(0, 10, (2, 6))

# 沿着第二个维度,将二维数组分成长度为3的2份
cols = np.split(y, 2, axis=1)
print(cols)

输出结果:

[array([[3, 2, 2],
       [9, 5, 0]]), array([[8, 3, 7],
       [6, 0, 8]])]

我们可以看到,数组被沿着第二个维度切割成了长度为3的两部分。

小结

通过上面的示例代码可以看出,使用np.split函数可以简单高效地对numpy数组进行分割。如果要实现更复杂的分割操作,可以根据需要调整切割位置来满足需求。