문제

누가 누가 몇 번이나 이메일을 보낸 사람을 나타내는 정수 매트릭스가 있다고 가정 해 봅시다. 소셜 네트워크 분석을 위해 간단한 방향이없는 그래프를 만들고 싶습니다. 따라서 행렬을 이진 행렬로 변환하고 나중에 튜플 목록으로 변환해야합니다.

내 질문 : 10 진수 행렬을 이진 행렬로 줄이는 빠르고 편리한 방법이 있습니까?

그러한 :

26, 3, 0
3, 195, 1
0, 1, 17

:

1, 1, 0
1, 1, 1
0, 1, 1
도움이 되었습니까?

해결책

적용하십시오 scipy.sign 매트릭스의 모든 셀에 기능합니다.

편집] cudos to SpeciousFool:

만약에 x 그러면 매트릭스입니다 scipy.sign(x) 이진 행렬을 제공합니다.

다른 팁

다음을 수행 할 수 있습니다.

>>> import scipy
>>> a = scipy.array((12, 0, -1, 23, 0))
array([12,  0, -1, 23,  0])
>>> (a != 0).astype(int)
array([1, 0, 1, 1, 0])

마법은 안에 있습니다 a != 0 부분. 배열에 부울 표현식을 적용 할 수 있으며 부울 배열을 반환합니다. 그런 다음 ints로 변환됩니다.

당신은 또한 이것을 시도 할 수 있습니다 :

>>>x,y = scipy.where(yourMatrix>0)
>>>yourMatrix[:,:] = 0
>>>yourMatrix[x,y] = 1

나는 이것이 또한 더 빨라질 것이라고 생각한다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top