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

2017 年 4 月 12 日
 hss133
各位大神,

我现在需要构造一个 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 。。卡了快一个小时运行完毕。。。

求问有没有其他解决方法。。。
4355 次点击
所在节点    Python
19 条回复
xidianlz
2017 年 4 月 12 日
不负责任说一句 用 numpy 吧
wwqgtxx
2017 年 4 月 12 日
这么大个二维数组,就算用 c++的 vector 动态分配实现也是慢的可以吧,你可以试试 numpy 的矩阵来保存一下,主要应该是要一次性分配好内存,要不然这样递增式的分配,不慢才怪喽
954880786
2017 年 4 月 12 日
构建一个一维数组,然后写个函数做映射?
Lime
2017 年 4 月 12 日
假设你 t 里边存的是 32 位 int, 70000 * 10000 * 32 / (1 << 30) = 20G, 电脑内存够么?
Lime
2017 年 4 月 12 日
落了个 4, 5G, sorry
debye
2017 年 4 月 12 日
我在想什么样的场景需要这样做
真的有这样的数组要求最好还是放数据库中吧
xiaoyu233
2017 年 4 月 12 日
import numpy as np
smallHao
2017 年 4 月 12 日
Dense or sparse?
XYxe
2017 年 4 月 12 日
@Lime #4 Python 里的 int 占 28 字节
BingoXuan
2017 年 4 月 12 日
pandas + numpy 吧,注意内存消耗
hss133
2017 年 4 月 12 日
@debye 求解一个有几万个约束的优化模型中的一个步骤,需要构造技术矩阵~ 亲测numpy可用
hss133
2017 年 4 月 12 日
非常感谢大家!
numpy直接生成一个全为零的相应规模的矩阵(因为我的矩阵大部分值是零),然后根据需要修改对应值就可以了!
rock_cloud
2017 年 4 月 12 日
如果矩阵是稀疏的, sklearn 中有一些处理稀疏矩阵的算法。
justou
2017 年 4 月 12 日
@hss133 这种情况用 scipy 的 sparse 创建稀疏矩阵会大大提高效率
hss133
2017 年 4 月 12 日
@justou 嗷,好的我研究下~谢谢!
syahd
2017 年 4 月 12 日
试试 pypy
liyvhg
2017 年 4 月 12 日
MATLAB 。。。
bazingaterry
2017 年 4 月 12 日
稀疏矩阵
fy
2017 年 4 月 12 日
稀疏矩阵啊

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://study.congcong.us/t/354260

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX