【发布时间】:2015-09-01 14:00:50
【问题描述】:
假设您有一个从图像中提取的 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)
以这种方式,当向我们新形成的图形添加顶点时,唯一形成的新顶点将是位于主对角线以上位置的那些。
【问题讨论】:
-
“我只关心一种我只能考虑对角线以上的顶点的方法”是什么意思,
range(M1,M2,M3...M10)是什么意思? -
不清楚您的确切问题是什么。也许尝试编辑它,这样你就可以在某处放置一个
?标记。 -
我的意思是我只需要帮助创建这个循环来只考虑边缘,并且一旦正确考虑了上三角形,我不需要帮助如何实际生成顶点。 Range(M1...M10) 是列索引。 Range(N1..N10) 是行索引。
-
@tom10 不确定你的意思
标签: python arrays numpy matrix indexing