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