我想在上三角矩阵的每个条目上调用一个函数。为了避免混乱的for循环嵌套,我使用了numpy.triu_indices函数。我的函数可以工作,但我想知道是否有一种更干净的方法来实现索引。
import numpy as np
def weighted_edges(adjmat):
indices = np.triu_indices(len(adjmat))
return ((x, y, adjmat[x,y]) for (x,y) in zip(indices[0], indices[1]))我怀疑有一种方法可以实现这一点,而不需要在zip call中引用indicesi。是否真的有办法这样做呢?
发布于 2013-06-29 00:12:06
如果您有一个需要上三角值的N x N矩阵,只需执行以下操作
import numpy as np
N = 5
x = np.arange(N**2).reshape(N, N)
upper = x[np.triu_indices(N, 0)]如果您希望三角值从主对角线偏移k列,则执行此操作
upper = x[np.triu_indices(N, k)]https://stackoverflow.com/questions/17368947
复制相似问题