在numpy中迭代矩阵

mar*_*all 6 python numpy

如何在numpy中用n个矩阵(或2d数组)迭代所有2 ^(n ^ 2)二进制n?我会这样的:

for M in ....:
Run Code Online (Sandbox Code Playgroud)

你必须使用itertools.product([0,1], repeat = n**2),然后转换为2d numpy阵列?

这段代码会给我一个随机的2d二进制矩阵,但这不是我需要的.

np.random.randint(2, size=(n,n))
Run Code Online (Sandbox Code Playgroud)

alk*_*lko 4

2**(n**2)请注意,即使对于相对较小的 n,这也是一个很大的数字,因此您的循环可能会无限期地运行很长时间。

话虽这么说,迭代您需要的矩阵的一种可能方法是例如

nxn = np.arange(n**2).reshape(n, -1)
for i in xrange(0, 2**(n**2)):
    arr = (i >> nxn) % 2
    # do smthng with arr
Run Code Online (Sandbox Code Playgroud)