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