【问题标题】:How to create a numpy matrix, whose values meet several conditions?如何创建一个numpy矩阵,其值满足几个条件?
【发布时间】:2017-10-26 02:05:30
【问题描述】:

我想创建一个矩阵,首先满足这个条件:

  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)

现在第二个标准是我正在努力解决的标准:

  1. 如果m[1][2] == 1 & m[1][3] == 0 m[2][3] == 0

我想检查m 中的所有值是否都满足此条件(索引 1、2、3 是示例)。如果没有,我想将m[2][3] 的值更改为零。我用 for 循环尝试了以下代码,但它会将所有值覆盖为零。

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

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

【问题讨论】:

  • 您好 Benedikt,欢迎来到该网站。我们喜欢在这里保持问题的重点,所以我继续把你的问题删掉了。如果您对我的更改不满意,请随时重新编辑。
  • 感谢您编辑麦克;)

标签: python python-3.x numpy


【解决方案1】:

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

m[i][j] == 1 & m[i][k] == 0 <-> m[j][k] == 0

i、j 和 k 之间没有任何依赖关系?

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

m[i][i+1] == 1 & m[i][i+2] == 0 <-> m[i+1][i+2] == 0

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2014-06-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多