推荐学习书目
Learn Python the Hard Way
Python Sites
PyPI - Python Package Index
http://diveintopython.org/toc/index.html
Pocoo
值得关注的项目
PyPy
Celery
Jinja2
Read the Docs
gevent
pyenv
virtualenv
Stackless Python
Beautiful Soup
结巴中文分词
Green Unicorn
Sentry
Shovel
Pyflakes
pytest
Python 编程
pep8 Checker
Styles
PEP 8
Google Python Style Guide
Code Style from The Hitchhiker's Guide
sunhk25
V2EX  ›  Python

numpy 二位数组过滤掉指定条件元素

  •  
  •   sunhk25 · Dec 10, 2019 · 4099 views
    This topic created in 2367 days ago, the information mentioned may be changed or developed.
    • 如何过滤元素并保留二维数组
        t = np.asarray([[2,3,4],[1,2,3],[1,0,4],[4,5,6]])
        # 删除大于等于 4 的元素:保留二维数组但是不需要保留矩阵结构
        # 希望结果:[[4], [], [4], [4, 5, 6]]
    
        t[t >= 4]
        # 可以删除但是结果为一维
        # array([4, 4, 4, 5, 6])
    
        np.where(t >= 4, t, 0)
        # 不需要的元素( 0 )大量占用内存
        #array([[0, 0, 4],
        #       [0, 0, 0],
        #       [0, 0, 4],
        #       [4, 5, 6]])
    
    4 replies    2019-12-11 15:48:53 +08:00
    epleone
        1
    epleone  
       Dec 10, 2019   ❤️ 1
    如果 a = [[4], [], [4], [4, 5, 6]], 那么 a.shape ?
    也许你需要稀疏矩阵,或者说说你这个需求是用来实现什么。
    CrazyRundong
        2
    CrazyRundong  
       Dec 10, 2019
    ```python
    from scipy.sparse import coo_matrix

    # ...

    t[t > 4] = 0
    coo_t = coo_matrix(t)
    ```

    稀疏矩阵和稠密矩阵有不同的存储方式。如果不知道矩阵的 pattern,那就用 corrdicate based index 存储吧
    CrazyRundong
        3
    CrazyRundong  
       Dec 10, 2019   ❤️ 1
    necomancer
        4
    necomancer  
       Dec 11, 2019
    用稀疏矩阵。稀疏矩阵 0 不占内存。操作基本和 numpy array 一致。你想要的结果只能用列表生成式了
    [_[_>=4] for _ in t]
    In [2]: [_[_>=4] for _ in t]
    Out[2]: [array([4]), array([], dtype=int64), array([4]), array([4, 5, 6])]

    In [3]: np.array([_[_>=4] for _ in t])
    Out[3]:
    array([array([4]), array([], dtype=int64), array([4]), array([4, 5, 6])],
    dtype=object)
    得到一个 object array
    About   ·   Help   ·   Advertise   ·   Blog   ·   API   ·   FAQ   ·   Solana   ·   3737 Online   Highest 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 44ms · UTC 04:42 · PVG 12:42 · LAX 21:42 · JFK 00:42
    ♥ Do have faith in what you're doing.