2017-05-25 86 views
1

我想建立一个矩阵,满足起初此条件:如何创建一个numpy矩阵,其值满足几个条件?

  1. 例如如果一个值m[2][1] == 0 < - >m[1][2] in {0,1}

对于这一个我使用像上三角矩阵:

m = np.ones((6, 6), int) 
m = np.triu(m, 1) 

我改变剩余为零的一些随机值,直到一定比例达到:

MaxPer = 0.75 
i, e = np.count_nonzero(m), np.count_nonzero(m) 
MAX = np.round(MaxPre*e) 
while i > MAX: 
    m[np.random.randint(len(m[0][:]))][np.random.randint(len(m[0][:]))] = 0 
    i = np.count_nonzero(m) 

现在第二个标准是一个我挣扎:

  • 如果m[1][2] == 1 & m[1][3] == 0 < - >m[2][3] == 0
  • 我想检查,如果在m所有值满足该条件(索引1,2,3是实施例)。如果不是,我想将m[2][3]的值更改为零。我使用for-loops尝试了以下代码,但它将所有值覆盖为零。

    for k in range(len(m[0][:])): 
          for l in range(k, len(m[0][:])): 
           for j in range(l,len(m[0][:])): 
            if matrix[k][l] == 1 & matrix[k][j] == 0: 
             matrix[l][j] = 0 
    

    有没有简单的方法来没有循环?

    +0

    你好Benedikt,并欢迎来到该网站。我们希望在这里保持非常准确的问题,所以我继续前进并修剪掉了你的问题。如果您对我的更改不满意,请随时再次编辑它。 – MackM

    +0

    感谢您编辑Mack;) –

    回答

    0

    我认为施加你的第二个条件确实会导致矩阵归零。 您确定要

    ​​

    之间没有I,J,和k任何依赖关系?

    也许你想要这样的东西(这需要在fors中进行一些更改)?

    m[i][i+1] == 1 & m[i][i+2] == 0 <-> m[i+1][i+2] == 0 
    
    相关问题