python在有限资源下如何把一个大数组写出到csv文件

夜晚会哭的猫 2017-11-16 10:41:41
资源情况:8c 16G内存
当前情况:
组合数C(11,30)所有的元素生成大数组(numpy数组),用to_csv写出到文件,后期用read_csv分块读入做循环计算。目前在生成大数组,写出到文件的过程中内存占满卡死。后面部分没有问题。请教如何解决这个问题,有从数学角度考虑过分拆组合,没搞出来。
...全文
205 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
oyljerry 2017-11-16
  • 打赏
  • 举报
回复

c(m,n)=c(m-1,n-1)+c(m-1,n)
oyljerry 2017-11-16
  • 打赏
  • 举报
回复

c(m-1,n-1)+c(m-1,n)
不是可以拆分吗,然后每一个结果保存下来,后面计算的时候直接使用。
夜晚会哭的猫 2017-11-16
  • 打赏
  • 举报
回复
对,拆分组合是对的,数学不好,搞不出来
夜晚会哭的猫 2017-11-16
  • 打赏
  • 举报
回复
现在就是在内存中生成数组时占光了资源,后期分块写或读都是可以的。目前想的是如何分拆在内存中生成这个大数组, 或者有别的占资源少的数据类型生成,分块写的时候再转类型
oyljerry 2017-11-16
  • 打赏
  • 举报
回复
分块处理,先看能不能内存中生成数组,如果可以,那么就不要一次性写入文件,而是把数组一部分分一部分写入 如果数组也不能生成,那就是拆分组合的公式到各个子公式,分别计算,分别写入文件
夜晚会哭的猫 2017-11-16
  • 打赏
  • 举报
回复
多谢版主,这个公式c(m,n)=c(m-1,n-1)+c(m-1,n)得到的结果数是对的,但是我想得到的其实是元素组合内容 如C(3,2)的[(1,2),(2,3),(1,3)],然后元素写出到文件。这样的话感觉这个公式就用不了。 我查了xrange和range的区别,我想这样循环的写出,看看到时能否解决问题 listb2 = itertools.combinations(xrange(1, 30), 10) for item in listb2: print item

37,720

社区成员

发帖
与我相关
我的任务
社区描述
JavaScript,VBScript,AngleScript,ActionScript,Shell,Perl,Ruby,Lua,Tcl,Scala,MaxScript 等脚本语言交流。
社区管理员
  • 脚本语言(Perl/Python)社区
  • IT.BOB
加入社区
  • 近7日
  • 近30日
  • 至今

试试用AI创作助手写篇文章吧