给定以下 numpy 数组:
arr = np.array([0, 1, 2, 3, 4, 5])
什么迭代器会从 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] ) ]
我知道可以使用 start
、stop
和 step
参数进行数组切片,但会返回单个元素:
x = 2
sub_elements = [sub_elem for sub_elem in arr[::x]]
sub_elements = [0, 2, 4]
最佳答案
要迭代 numpy 数组并获取特定长度的子数组,可以使用 numpy.reshape 函数。通过将数组 reshape 为所需的形状,可以获得指定长度的子数组。这是一个例子: 将 numpy 导入为 np
arr = np.array([0, 1, 2, 3, 4, 5])
x = 2
sub_arrays = np.reshape(arr, (-1, x))
在此示例中,np.reshape 用于将数组 arr reshape 为长度为 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])]
祝你编码愉快!
关于python - 迭代 numpy 数组以获取子数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/76493293/