我正在尝试遍历 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 的大部分好处。尝试将您的操作矢量化。
关于python - 即使使用 1 行/2 列数组,也在 python 中迭代 Numpy 数组行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62140913/