簡體   English   中英

將numpy矩陣轉換為1D numpy數組

[英]Convert numpy matrix into 1D numpy array

我在一個維度上有一個csr_matrix的總和,它返回一維向量。 默認情況下,這是numpy.matrix類型的形狀(1,N)。 但是,我想通過一個帶有形狀(N,)的numpy.array表示這個。 以下作品:

>>> import numpy as np; import scipy.sparse as sparse
>>> a = sparse.csr_matrix([[0,1,0,0],[1,0,0,0],[0,1,2,0]])
>>> a
Out[15]: 
<3x4 sparse matrix of type '<class 'numpy.int64'>'
    with 4 stored elements in Compressed Sparse Row format>
>>> a.todense()
Out[16]: 
matrix([[0, 1, 0, 0],
        [1, 0, 0, 0],
        [0, 1, 2, 0]], dtype=int64)
>>> a.sum(axis=0)
Out[17]: matrix([[1, 2, 2, 0]], dtype=int64)
>>> np.array(a.sum(axis=0)).ravel()
Out[18]: array([1, 2, 2, 0], dtype=int64)

然而,對於從numpy矩陣到numpy數組的轉換,這最后一步看起來有點過分。 是否有一個我遺失的功能可以為我做這個? 它應通過以下單元測試。

def test_conversion(self):
    a = sparse.csr_matrix([[0,1,0,0],[1,0,0,0],[0,1,2,0]])
    r = a.sum(axis=0)
    e = np.array([1, 2, 2, 0])
    np.testing.assert_array_equal(r, e)

該類型numpy.matrix已經是的一個子類numpy.ndarray ,所以沒有轉換需要發生:

>>> np.ravel(a.sum(axis=0))
array([1, 2, 2, 0])

我不確定這是否與您所做的完全相同,但它看起來有點簡潔:

a.sum(axis=0).A1

http://docs.scipy.org/doc/numpy/reference/generated/numpy.matrix.A1.html#numpy.matrix.A1

將n維數組轉換為1維數組的簡單numpy hack。

import numpy as np 
a = np.array([[1],[2]])

數組([[1] [2]])

a.reshape(len(a))

數組([1,2])

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM