numpy中的对称矩阵?
我想在Python中创建一个对称矩阵,并用零填充它。
目前,我已经创建了一个已知大小的数组,但这对于后续输入到R作为距离矩阵来说不太合适。
在numpy中有没有什么“简单”的方法可以创建对称矩阵呢?
编辑
我需要澄清一下——创建“对称”矩阵没问题。不过我只想生成它的下三角形部分,也就是,
ar = numpy.zeros((3, 3))
array([[ 0., 0., 0.],
[ 0., 0., 0.],
[ 0., 0., 0.]])
我想要:
array([[ 0],
[ 0, 0 ],
[ 0., 0., 0.]])
这可能吗?
1 个回答
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中很难被超越。那么,不使用这种方法的主要好处是什么呢?