numpy中的对称矩阵?

2 投票
1 回答
4911 浏览
提问于 2025-04-16 10:58

我想在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中很难被超越。那么,不使用这种方法的主要好处是什么呢?

撰写回答