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