在对角线 numpy 数组上方生成值

Generation of values above diagonal numpy array

假设您有一个从图像中提取的强度值的 10x10 numpy 数组。确切的数字现在并不重要。我想采用这个矩阵,并仅使用矩阵上半部分的顶点位置为图形生成顶点。更具体地说,如果我们的矩阵维度定义为 (MxN),我们可能会这样写:

for x in range(M1,M2,M3...M10):
    for y in range(N1,N2,N3...N10):
       if (x-y) >=0:
           graph.addVertex(x,y)

图 class 定义和 addVertex 定义对我来说并不重要,因为我已经写好了。我只关心一种方法,在这种方法中我只能考虑对角线上方的顶点。接受任何和所有建议,我上面的建议只是一个可能有用的起点。谢谢!

编辑:解决方案

抱歉,如果我的清晰度问题很严重,因为我对 Python 中的编码有些陌生,但这是我的问题的解决方案:

g=Graph()
L=4
outerindex=np.arange(L**2*L**2).reshape((L**2,L**2))
outerindex=np.triu(outerindex,k=0)
for i in range(len(outerindex)):
    if outerindex.any()>0:
        g.addVertex(i)

以这种方式,当向我们新形成的图形添加顶点时,形成的唯一新顶点将是位于主对角线上方位置的顶点。

我想你想要的是这样的:

import numpy as np

a = np.arange(16).reshape((4,4))
print a

for i in range(4):
    for j in range(i, 4):
        print a[i,j],

# [[ 0  1  2  3]
#  [ 4  5  6  7]
#  [ 8  9 10 11]
#  [12 13 14 15]]

# 0 1 2 3 5 6 7 10 11 15

也就是这里的重点是让内循环的索引依赖于外循环

如果您不想包含对角线,请使用带 range(i+1,4) 的内循环。