python - 迭代 numpy 数组以获取子数组

标签 python arrays numpy

给定以下 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] ) ]

我知道可以使用 startstopstep 参数进行数组切片,但会返回单个元素:

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/

相关文章:

python - 为什么不能向对象实例添加任意成员?

c - 将字符串数组的指针传递给 C 中的 toupper()

php - 将数组值传递给 colspan 以在 php 中创建列表

python - 如何获取 Kivy TextInput 或 Label 的字符宽度

python - 将值随机分配给 Pandas 数据框中的行子集

python - 调试 C 程序时如何将 gdb 值转换为 python 数字对象

python - 在 opencv - numpy - python 中转换颜色时失去抗锯齿

arrays - 如何在cassandra中存储多维数组

python - 在 pandas 中对数据进行分组和排序的最佳方法是什么?

python - 从 numpy 求和二维数组创建加权 igraph 图作为邻接矩阵