Симметричные матрицы в NumPy? - PullRequest
1 голос
/ 01 февраля 2011

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.]])

Возможно ли это?

1 Ответ

3 голосов
/ 01 февраля 2011

Я не думаю, что можно попробовать работать с такими треугольными массивами.

Так вот, например, прямая реализация (возведенных в квадрат) попарно евклидовых расстояний:

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). Что было бы главным преимуществом не использования этого подхода?

...