【发布时间】:2015-01-27 14:50:25
【问题描述】:
我有一个非对称矩阵,基本上我想比较对角元素如下:
如果对角元素相等但符号相反,则保持元素的绝对值,对角元素为零
如果不是,那么这两个元素中的一个为0(但我们不知道是哪一个),所以取两者的绝对值。
完成后,转置矩阵的下三角形并将其添加到上三角形。
我想出了以下python循环:
for i in range(0, number_files):
for j in range(0, len(Identifier)):
for k in range(0,len(Identifier)):
if Matrix[i][j][k] == - Matrix[i][k][j]:
Matrix[i][j][k] = abs(Matrix[i][j][k])
Matrix[i][k][j] = 0
else:
Matrix[i][j][k] = abs(Matrix[i][j][k]) # one of this two
Matrix[i][k][j] = abs(Matrix[i][k][j]) # values is 0
Matrix[i] = np.tril(Matrix[i],0).transpose() + np.triu(Matrix[i],0)
但是,这非常慢,我想知道如何使用 numpy 改进它。
我知道我可以生成一个测试,例如:
test=np.isclose(Matrix.transpose(),-Matrix)
这将返回一个布尔矩阵,但我不知道如何处理。
非常感谢您的帮助
【问题讨论】:
标签: python arrays numpy matrix multidimensional-array