본문 바로가기
파이썬

파이썬 희소 행렬 요소에 액세스하는 방법은 무엇입니까?

by º기록 2021. 1. 25.
반응형
type(A)
<class 'scipy.sparse.csc.csc_matrix'>
A.shape
(8529, 60877)
print A[0,:]
  (0, 25)   1.0
  (0, 7422) 1.0
  (0, 26062)    1.0
  (0, 31804)    1.0
  (0, 41602)    1.0
  (0, 43791)    1.0
print A[1,:]
  (0, 7044) 1.0
  (0, 31418)    1.0
  (0, 42341)    1.0
  (0, 47125)    1.0
  (0, 54376)    1.0
print A[:,0]
  #nothing returned

이제 내가 이해하지 못하는 것은 A [1, :] 가 두 번째 행에서 요소를 선택해야하지만 print A [1, :] <를 통해 첫 번째 행에서 요소를 가져옵니다. / code>. 또한 print A [:, 0] 는 첫 번째 열을 반환해야하지만 아무것도 인쇄되지 않습니다. 왜?

 

해결 방법

 

A [1, :] 자체는 모양 (1, 60877)의 희소 행렬입니다. 는 인쇄중인 항목이며 행이 하나뿐이므로 모든 행 좌표가 0입니다.

예를 들면 :

In [41]: a = csc_matrix([[1, 0, 0, 0], [0, 0, 10, 11], [0, 0, 0, 99]])

In [42]: a.todense()
Out[42]: 
matrix([[ 1,  0,  0,  0],
        [ 0,  0, 10, 11],
        [ 0,  0,  0, 99]], dtype=int64)

In [43]: print(a[1, :])
  (0, 2)    10
  (0, 3)    11

In [44]: print(a)
  (0, 0)    1
  (1, 2)    10
  (1, 3)    11
  (2, 3)    99

In [45]: print(a[1, :].toarray())
[[ 0  0 10 11]]

열을 선택할 수 있지만 열에 0이 아닌 요소가 없으면 print 로 출력 될 때 아무것도 표시되지 않습니다.

In [46]: a[:, 3].toarray()
Out[46]: 
array([[ 0],
       [11],
       [99]])

In [47]: print(a[:,3])
  (1, 0)    11
  (2, 0)    99

In [48]: a[:, 1].toarray()
Out[48]: 
array([[0],
       [0],
       [0]])

In [49]: print(a[:, 1])


In [50]:

마지막 print 호출은 a [:, 1] 열에 0이 아닌 요소가 없기 때문에 출력이 표시되지 않습니다.

 

참조 페이지 https://stackoverflow.com/questions/15115765

 

 

반응형

댓글