假设您从图像中提取了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)
图形类定义和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)
以这种方式,当向我们新形成的图形添加顶点时,形成的唯一新顶点将是位于主对角线上方的位置。
答案 0 :(得分:1)
我认为你想要的是这样的:
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)
。