1

你好,

我希望在 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.]])

这可能吗?

4

1 回答 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 级别)。不使用这种方法的主要优势是什么?

于 2011-01-31T22:05:57.837 回答