迭代numpy数组以获得子数组

vaj7vani  于 2023-06-23  发布在  其他
关注(0)|答案(2)|浏览(143)

给定以下numpy数组:

arr = np.array([0, 1, 2, 3, 4, 5])

什么样的iterable会从arr返回长度为x的子数组?(假设len(arr)x的倍数)

x = 2
sub_arrays = [sub_arr for sub_arr in iterable(arr, x)]

sub_arrays = [ np.ndarray([0,1]),np.ndarray([2,3]),np.ndarray([4,5])]
我知道使用startstopstep参数可以进行数组切片,但这会返回单个元素:

x = 2
sub_elements = [sub_elem for sub_elem in arr[::x]]

sub_elements = [0,2,4]

mkh04yzy

mkh04yzy1#

要迭代numpy数组并获得特定长度的子数组,可以使用numpy.reshape函数。通过将数组整形为所需的形状,可以获得指定长度的子数组。下面是一个例子:import numpy as np

arr = np.array([0, 1, 2, 3, 4, 5])
x = 2

sub_arrays = np.reshape(arr, (-1, x))

在本例中,np.reshape用于将数组arr整形为长度为x的子数组reshape函数中的参数-1允许numpy自动确定该尺寸的适当大小。得到的sub_arrays将是一个包含子数组的2D numpy数组:

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

如果需要,还可以将每个子数组转换为单独的ndarray:

sub_arrays = [np.array(sub_arr) for sub_arr in sub_arrays]

这将给你一个你指定的numpy数组列表:

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

有一个好的编码!

bgibtngc

bgibtngc2#

你应该使用np.array_split

arr = np.array([0, 1, 2, 3, 4, 5])
x = 2
sub_elements = np.array_split(arr, len(arr)/x)
[ array([0,1]), array([2,3]), array([4,5]) ]

相关问题