【问题标题】:Python enumerate through 2D array in numpy [duplicate]Python通过numpy中的二维数组枚举[重复]
【发布时间】:2014-01-27 01:52:32
【问题描述】:

我想要一个行为类似于enumerate,但在 numpy 数组上的函数。

>>> list(enumerate("hello"))
[(0, "h"), (1, "e"), (2, "l"), (3, "l"), (4, "o")]

>>> for x, y, element in enumerate2(numpy.array([[i for i in "egg"] for j in range(3)])):
        print(x, y, element)

0 0 e
1 0 g
2 0 g
0 1 e
1 1 g
2 1 g
0 2 e
1 2 g
2 2 g

目前我正在使用这个功能:

def enumerate2(np_array):
    for y, row in enumerate(np_array):
        for x, element in enumerate(row):
            yield (x, y, element)

有没有更好的方法来做到这一点?例如。一个内置函数(我找不到任何函数),或者以某种方式更快的不同定义。

【问题讨论】:

标签: python arrays numpy enumerate


【解决方案1】:

你想要np.ndenumerate:

>>> for (x, y), element in np.ndenumerate(np.array([[i for i in "egg"] for j in range(3)])):
...     print(x, y, element)
... 
(0L, 0L, 'e')
(0L, 1L, 'g')
(0L, 2L, 'g')
(1L, 0L, 'e')
(1L, 1L, 'g')
(1L, 2L, 'g')
(2L, 0L, 'e')
(2L, 1L, 'g')
(2L, 2L, 'g')

【讨论】:

  • 谢谢,我会在 n 分钟后接受。我想我应该看看库的其他部分而不是数组方法,我想这更有意义。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2017-02-25
  • 2017-03-12
  • 2016-01-28
  • 1970-01-01
  • 1970-01-01
  • 2021-08-10
  • 1970-01-01
相关资源
最近更新 更多