Symmetric matrices in numpy?

4.9k views Asked by At

I wish to initiate a symmetric matrix in python and populate it with zeros.

At the moment, I have initiated an array of known dimensions but this is unsuitable for subsequent input into R as a distance matrix.

Are there any 'simple' methods in numpy to create a symmetric matrix?

Edit

I should clarify - creating the 'symmetric' matrix is fine. However I am interested in only generating the lower triangular form, ie.,

ar = numpy.zeros((3, 3))

array([[ 0.,  0.,  0.],
       [ 0.,  0.,  0.],
       [ 0.,  0.,  0.]])

I want:

array([[ 0],
       [ 0, 0 ],
       [ 0.,  0.,  0.]])

Is this possible?

1

There are 1 answers

0
eat On BEST ANSWER

I don't think it's feasible to try work with that kind of triangular arrays.

So here is for example a straightforward implementation of (squared) pairwise Euclidean distances:

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

For performance wise it's hard to beat it (in Python level). What would be the main advantage of not using this approach?