V2EX = way to explore
V2EX 是一个关于分享和探索的地方
Sign Up Now
For Existing Member  Sign In
推荐学习书目
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
hss133
V2EX  ›  Python

小白求助:关于 Python 创建非常大的二维数组的几个问题

  •  
  •   hss133 · Apr 12, 2017 · 4430 views
    This topic created in 3305 days ago, the information mentioned may be changed or developed.
    各位大神,

    我现在需要构造一个 7 万*1 万大小的数组存储一些数据,
    我的大概写法是:
    T=[]
    for i in range(70000):
    --t = [0 for col in range(10000)]
    --t[col]=f(i) //根据 i 会修改 t 中的某些值
    --T.append(t)

    这样可以获得 T,但是巨慢。。。
    电脑直接死机 T^T 。。卡了快一个小时运行完毕。。。

    求问有没有其他解决方法。。。
    19 replies    2017-04-12 12:54:32 +08:00
    xidianlz
        1
    xidianlz  
       Apr 12, 2017   ❤️ 1
    不负责任说一句 用 numpy 吧
    wwqgtxx
        2
    wwqgtxx  
       Apr 12, 2017 via iPhone   ❤️ 1
    这么大个二维数组,就算用 c++的 vector 动态分配实现也是慢的可以吧,你可以试试 numpy 的矩阵来保存一下,主要应该是要一次性分配好内存,要不然这样递增式的分配,不慢才怪喽
    954880786
        3
    954880786  
       Apr 12, 2017 via iPhone
    构建一个一维数组,然后写个函数做映射?
    Lime
        4
    Lime  
       Apr 12, 2017
    假设你 t 里边存的是 32 位 int, 70000 * 10000 * 32 / (1 << 30) = 20G, 电脑内存够么?
    Lime
        5
    Lime  
       Apr 12, 2017
    落了个 4, 5G, sorry
    debye
        6
    debye  
       Apr 12, 2017
    我在想什么样的场景需要这样做
    真的有这样的数组要求最好还是放数据库中吧
    xiaoyu233
        7
    xiaoyu233  
       Apr 12, 2017 via iPhone
    import numpy as np
    smallHao
        8
    smallHao  
       Apr 12, 2017 via Android
    Dense or sparse?
    XYxe
        9
    XYxe  
       Apr 12, 2017
    @Lime #4 Python 里的 int 占 28 字节
    BingoXuan
        10
    BingoXuan  
       Apr 12, 2017 via Android
    pandas + numpy 吧,注意内存消耗
    hss133
        11
    hss133  
    OP
       Apr 12, 2017
    @debye 求解一个有几万个约束的优化模型中的一个步骤,需要构造技术矩阵~ 亲测numpy可用
    hss133
        12
    hss133  
    OP
       Apr 12, 2017
    非常感谢大家!
    numpy直接生成一个全为零的相应规模的矩阵(因为我的矩阵大部分值是零),然后根据需要修改对应值就可以了!
    rock_cloud
        13
    rock_cloud  
       Apr 12, 2017
    如果矩阵是稀疏的, sklearn 中有一些处理稀疏矩阵的算法。
    justou
        14
    justou  
       Apr 12, 2017
    @hss133 这种情况用 scipy 的 sparse 创建稀疏矩阵会大大提高效率
    hss133
        15
    hss133  
    OP
       Apr 12, 2017
    @justou 嗷,好的我研究下~谢谢!
    syahd
        16
    syahd  
       Apr 12, 2017 via Android
    试试 pypy
    liyvhg
        17
    liyvhg  
       Apr 12, 2017 via Android
    MATLAB 。。。
    bazingaterry
        18
    bazingaterry  
       Apr 12, 2017 via iPhone
    稀疏矩阵
    fy
        19
    fy  
       Apr 12, 2017
    稀疏矩阵啊
    About   ·   Help   ·   Advertise   ·   Blog   ·   API   ·   FAQ   ·   Solana   ·   955 Online   Highest 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 75ms · UTC 23:15 · PVG 07:15 · LAX 16:15 · JFK 19:15
    ♥ Do have faith in what you're doing.