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()
方法。