我正在尝试查找矩阵中每一行的最小非零成对距离(511x511)。但是,在我编写的以下代码中,我既可以使用return函数获取第一行的值,也可以使用print函数获取所有行的值。
我的代码:
def allmatch():
Match = pd.DataFrame(squareform(pdist(m1, metric='braycurtis')),columns=df.Location_Index.unique(), index=df.Location_Index.unique())
X = Match.values
for row in X:
i = np.where(row==np.min(row[np.nonzero(row)]))
return(row[i])
In[1]: allmatch()
Out[1]: array([0.00917431])
或
def allmatch():
Match = pd.DataFrame(squareform(pdist(m1, metric='braycurtis')),columns=df.Location_Index.unique(), index=df.Location_Index.unique())
X = Match.values
for row in X:
i = np.where(row==np.min(row[np.nonzero(row)]))
print(row[i])
In[2]: allmatch()
Out[2]: [0.00917431]
[0.03496503 0.03496503]
[0.01098901]
[0.00346021]
[0.00471698]
[0.00316456]
[0.01123596]
...(with 504 more values)
当第一组代码返回一个numpy数组时,第二组代码返回一个NoneType。我想以numpy数组的形式获取第二组中的值,有没有办法解决这个问题?我意识到我的代码可能不是解决此问题的最有效方法,我将不胜感激任何改进它的建议。