HI,
我希望在python中启动对称矩阵并用零填充它。
目前,我已经启动了一系列已知尺寸,但这不适合随后输入R作为距离矩阵。
numpy中是否有任何'简单'方法来创建对称矩阵?
谢谢, d。
修改
我应该澄清 - 创建'对称'矩阵很好。但是我感兴趣的只是生成下三角形,即。,
ar = numpy.zeros((3, 3))
array([[ 0., 0., 0.],
[ 0., 0., 0.],
[ 0., 0., 0.]])
我想:
array([[ 0],
[ 0, 0 ],
[ 0., 0., 0.]])
这可能吗?
答案 0 :(得分:3)
我认为尝试使用这种三角形阵列是不可行的。
所以这里是例如(平方)成对欧几里德距离的直接实现:
def pdista(X):
"""Squared pairwise distances between all columns of X."""
B= np.dot(X.T, X)
q= np.diag(B)[:, None]
return q+ q.T- 2* B
对于性能方面而言,它很难被击败(在Python级别)。不使用这种方法的主要优势是什么?