遍历 python 中的 Numpy 数组行,即使是 1 行/2 列数组

Iterating over Numpy Array rows in python even with 1 row / 2 columns array

我正在尝试遍历 numpy 数组的行。该数组可能由两列和多行组成,如 [[a, b], [c, d], ...],或者有时由单行组成,如 [a, b].

对于一维数组,当我使用 enumerate 遍历行时,python 生成单个元素 a 然后 b 而不是完整的行[a, b]一次全部。

如何以与二维情况相同的方式迭代一维情况?

Numpy 无论如何都会迭代第一维。在迭代之前检查形状。

>>> x = np.array([1, 2])
>>> x.ndim
1

>>> y = np.array([[1, 2], [3, 4], [5, 6]])
>>> y.ndim
2

可能最简单的方法是始终包装对 np.array:

的调用
>>> x = np.array(x, ndmin=2, copy=False)
>>> y = np.array(y, ndmin=2, copy=False)

这将根据需要在您的数组中添加一个形状为 1 的维度。它的优点是您的输入甚至不必是数组,只需可以转换为数组的东西即可。

另一种选择是使用 atleast_2d 函数:

>>> x = np.atleast_2d(x)

综上所述,您可能首先通过尝试香草 python 循环而牺牲了使用 numpy 的大部分好处。尝试将您的操作向量化。