2011-01-31 3 views
1

안녕,numpy의 대칭 행렬?

나는 파이썬에서 대칭 행렬을 시작하고 그것을 0으로 채우고 싶습니다.

현재 알려진 치수의 배열을 시작했지만 이는 이후에 거리 매트릭스로 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.]]) 

이 가능합니까?

+0

'거리 매트릭스로 R에 이어지는 입력에 적합하지 않다'는 것을 더 자세히 설명해 주시겠습니까? 당신은'R'을 태그하지 않았습니다, 그래서 그것은 전혀 관련이 있습니까? 감사합니다 – eat

+0

죄송합니다 - 아니, 그게 정말 관련이 없습니다. 항목 간의 거리 (유클리드, 맨하탄, 코사인 등)는 쌍으로 계산되므로 대칭 출력이됩니다. R 데이터가 잘 처리되지 못하여 사용자 지정 행렬을 계산 중입니다. 그것은 또 다른 이야기입니다. 혼란에 사과드립니다! –

+1

@Darren : 아직 무엇을 찾고 있는지 확실하지 않습니다. 예를 들어 위의 삼중 대각 부분 만 계산하고 마술처럼 낮은 삼각 각 부분을 반영한다고 제안 하시겠습니까? 내가 할 수있는 처벌은 성과 처벌을 기대할 것입니다. 가지고있는 코드를 보여 주시겠습니까? – eat

답변

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 

현명 그것을 이길 어렵다 (파이썬 수준). 이 방법을 사용하지 않을 경우의 주된 이점은 무엇입니까?