3

好的,这是超级基本的,不幸的是,这意味着搜索它会产生无数次点击,所有这些都会做不同和/或更复杂的事情。

考虑这段代码:

shape = (10, 20)
indices = []
for i in range(shape[0]):
    for j in range(shape[1]):
        indices.append([i, j])

或者indices = itertools.product(range(10), range(20)).

现在,我觉得必须有一个简单的 numpy 函数可以做到这一点?就像是

indices = np.indices_into_shape((10, 20))

我可以通过搜索找到的大多数索引生成函数都会生成多个数组,例如 inmeshgridix_.

4

2 回答 2

3

您可以堆叠网格网格:

np.dstack(np.meshgrid(np.arange(10), np.arange(20), indexing='ij')).reshape(-1, 2)
于 2020-03-21T00:22:41.067 回答
1

一种方法是

np.argwhere(np.broadcast_to(True,(3,4)))
# array([[0, 0],
#        [0, 1],
#        [0, 2],
#        [0, 3],
#        [1, 0],
#        [1, 1],
#        [1, 2],
#        [1, 3],
#        [2, 0],
#        [2, 1],
#        [2, 2],
#        [2, 3]])

另一个(类似于@MadPhysicist 的)

np.c_[np.unravel_index(np.arange(3*4),(3,4))]
于 2020-03-21T00:18:05.330 回答