小白求助:关于 Python 创建非常大的二维数组的几个问题 - V2EX
推荐学习书目
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

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

  •  
  •   hss133 Apr 12, 2017 4466 views
    This topic created in 3323 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     5750 Online   Highest 6679       Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 66ms UTC 07:37 PVG 15:37 LAX 00:37 JFK 03:37
    Do have faith in what you're doing.
    ubao msn snddm index pchome yahoo rakuten mypaper meadowduck bidyahoo youbao zxmzxm asda bnvcg cvbfg dfscv mmhjk xxddc yybgb zznbn ccubao uaitu acv GXCV ET GDG YH FG BCVB FJFH CBRE CBC GDG ET54 WRWR RWER WREW WRWER RWER SDG EW SF DSFSF fbbs ubao fhd dfg ewr dg df ewwr ewwr et ruyut utut dfg fgd gdfgt etg dfgt dfgd ert4 gd fgg wr 235 wer3 we vsdf sdf gdf ert xcv sdf rwer hfd dfg cvb rwf afb dfh jgh bmn lgh rty gfds cxv xcv xcs vdas fdf fgd cv sdf tert sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf shasha9178 shasha9178 shasha9178 shasha9178 shasha9178 liflif2 liflif2 liflif2 liflif2 liflif2 liblib3 liblib3 liblib3 liblib3 liblib3 zhazha444 zhazha444 zhazha444 zhazha444 zhazha444 dende5 dende denden denden2 denden21 fenfen9 fenf619 fen619 fenfe9 fe619 sdf sdf sdf sdf sdf zhazh90 zhazh0 zhaa50 zha90 zh590 zho zhoz zhozh zhozho zhozho2 lislis lls95 lili95 lils5 liss9 sdf0ty987 sdft876 sdft9876 sdf09876 sd0t9876 sdf0ty98 sdf0976 sdf0ty986 sdf0ty96 sdf0t76 sdf0876 df0ty98 sf0t876 sd0ty76 sdy76 sdf76 sdf0t76 sdf0ty9 sdf0ty98 sdf0ty987 sdf0ty98 sdf6676 sdf876 sd876 sd876 sdf6 sdf6 sdf9876 sdf0t sdf06 sdf0ty9776 sdf0ty9776 sdf0ty76 sdf8876 sdf0t sd6 sdf06 s688876 sd688 sdf86