据我了解这个问题,您主要想要的是 itertools.product() 的 numpy 替代品。numpy 中最接近的类似物是 numpy.indices()。如果我们稍微修改问题中的代码示例,以便向我们展示在纯粹在 numpy 中工作时我们需要能够重现的输出:
indexes = itertools.product(range(3), repeat=3)
for coordinates in indexes:
print(coordinates)
我们得到以下结果:
(0, 0, 0)
(0, 0, 1)
(0, 0, 2)
(0, 1, 0)
(0, 1, 1)
(0, 1, 2)
(0, 2, 0)
(0, 2, 1)
(0, 2, 2)
(1, 0, 0)
(1, 0, 1)
(1, 0, 2)
(1, 1, 0)
(1, 1, 1)
(1, 1, 2)
(1, 2, 0)
(1, 2, 1)
(1, 2, 2)
(2, 0, 0)
(2, 0, 1)
(2, 0, 2)
(2, 1, 0)
(2, 1, 1)
(2, 1, 2)
(2, 2, 0)
(2, 2, 1)
(2, 2, 2)
以下代码示例将使用 numpy.indices() 而不是 itertools.product() 准确地逐行重现此结果:
import numpy
a, b, c = numpy.indices((3,3,3))
indexes = numpy.transpose(numpy.asarray([a.flatten(), b.flatten(), c.flatten()]))
for coordinates in indexes:
print(tuple(coordinates))