뚜렷한 클래스 (형식에 따른 클래스)는 np.matrix
(이전에는 구식 MATLAB 행렬처럼 동작 함)과 비슷하게 동작합니다. 모양은 항상 2d이고 인덱싱, 합계 및 관련 액션은 2d를 반환합니다.
이
In [177]: M.sum(axis=0)
Out[177]: matrix([[2, 2]], dtype=int32)
In [178]: _.shape
Out[178]: (1, 2)
In [179]: M.sum(axis=1)
Out[179]:
matrix([[1],
[3]])
In [180]: _.shape
Out[180]: (2, 1)
이것은 당신이 얻을 같은 동작입니다 :
In [174]: M.sum()
Out[174]: 4
In [175]: _.shape
Out[175]:()
In [176]: type(__)
Out[176]: numpy.int32
축 합계가 2 차원 열 또는 행 벡터 고밀도 매트릭스를 생성합니다
In [172]: M = sparse.csr_matrix([[0,1],[2,1]])
In [173]: M
Out[173]:
<2x2 sparse matrix of type '<class 'numpy.int32'>'
with 3 stored elements in Compressed Sparse Row format>
총 합계는 스칼라, 또는 0D 배열을 생성 조밀 한 모체에서, 예를 들면. M.todense()
. keepdims=True
은 배열 (MATLAB에서 오는 사람들은 sum
치수를 줄이는 것에 대해 불평하는 사람들)에 이와 같은 것을 제공합니다.
조밀 행렬은 1 차원 배열로 변환하는 편리한 .A1
속성을 가진다 : 희소 행렬 및 밀도 행렬 모두
In [181]: M.sum(axis=1).A1
Out[181]: array([1, 3])
In [182]: M.sum(axis=0).A1
Out[182]: array([2, 2], dtype=int32)
.A
작동 있지만 희소 toarray
방법 (및 todense
)을 갖는다. 내가 말했듯이, 스파 스는 조밀 한 행렬을 모방하지만 서브 클래스는 아닙니다.
스파 스 축 합계는 실제로 행렬 곱셈을 수행합니다. 희소 행렬은 조밀 한 매트릭스 생산 * 고밀도 매트릭스 :
In [186]: M*np.matrix([[1],[1]])
Out[186]:
matrix([[1],
[3]], dtype=int32)
In [187]: np.matrix([[1,1]])*M
Out[187]: matrix([[2, 2]], dtype=int32)
배열의 합이 '빈'떠나지 않을 대한 불만 (단수는 용어, 1 0이 아닌) 차원 :
Why does the shape remains same when I sum a square numpy array along either directions?
나는 생각한다 이것은 "행렬"이고 배열이 아니기 때문입니다. 그러므로 당신은 두 가지 차원을 가져야합니다. –
@PaulH 원래의 행렬을 Numpy 배열로 캐스팅 할 수 있지만 합계에서 반환 된 객체는 왜 캐스팅하지 못합니까? – danijar
스파 스 행렬 대 numpy.matrix? –