迭代具有不同行的矩阵

时间:2014-02-14 21:04:58

标签: python numpy

如何有效地遍历所有由0和1组成的数组,其中所有行和所有列都是不同的?目前我这样做。

h = 10
n = 15
hxn = np.arange(h*n).reshape(h, -1)
for i in xrange(0, 2**(h*n)):
    M = (i >> hxn) & 1
#DO WORK

但这包括许多行或列相同的2d数组。我也不关心行或列的顺序。


我不想只是测试每个M以查看它是否有重复的行或列并丢弃它们,因为这将是非常低效的。我想找到一种方法来迭代更少数量的矩阵,没有重复的行或列。

1 个答案:

答案 0 :(得分:0)

您可以使用Numpy的sum()函数设置新的矩阵M和计算;

import numpy as np
h = 10
n = 15

M = np.zeros( (h,n), dtype ='float64' ) # create matrice M dimensioned h,n with floats
                                        # if you want integers instead of floats, change
                                        # dtype to 'int32'
hxn = np.arange(h*n).reshape(h, -1)

for i in xrange(0,h):   # loop in range h starting from 0
    for j in range(0,n):  # loop in range n from 0
        M[i,j] = sum([(i*j)*2])   # set matrice row and column, M[i,j] by sum([]) 

        print M