Python/Numpy大数据编程经验

Python/Numpy大数据编程经验

1.边处理边保存数据,不要处理完了一次性保存。不然程序跑了几小时甚至几天后挂了,就啥也没有了。即使部分结果不能实用,也可以分析程序流程的问题或者数据的特点。

2. 及时用 del 释放大块内存。Python缺省是在变量范围(variablescope)之外才释放一个变量,哪怕这个变量在后面的代码没有再被用到,所以需要手动释放大的array。

注意所有对数组的引用都del之后,数组才会被del。这些引用包括A[2:]这样的view,即使np.split也只是创建了view,没有真的把内存分到不同的array里。

3. 矩阵点乘对角阵,用逐行乘可以快几十、几百倍:M.dot( diag(v) ) -> M*v。

4. 尽量重用内存。比如

sqrtW = np.sqrt(W)

(W以后再没有用到了)

这样多了分配sqrtW内存的时间

可以改写成

np.sqrt(W,W) # in placesqrt

sqrtW = W # take auser-friendly name as its reference

类似的

A = B + C # B is neverused later

可以改写成

B += C; A = B

4. 用 ipython 的 run -p prog.py 做profiling,找出耗时最多的语句。

也可以实现简单的Timer类,打印出耗时流程使用的时间。

5. 把实际代码高度简化,只留下使用相同大小的内存和相同多的运算的skeleton,来事先评估算法的时间和空间复杂度。而且可以分块评估。比如

…… complex and slowroutine to compute V11, Wsum, Gwmean ......

for i in xrange(noncore_size):

wi = Wsum[ i ]

VW = V11.T* wi

VWV =VW.dot(V11)

V21[ i] =np.linalg.inv(VWV).dot( VW.dot(Gwmean[ i]) )

可以写个test.py,用 np.random.randn() 随机初始化 V11,Wsum, Gwmean,然后执行这个代码块,看出大致所需内存和每个循环的时间,避免了执行之前漫长的计算这些变量的时间。

6.如果是windows,把windows自动安装更新的选项关掉。不然可能跑了一夜程序,收结果时一看,windows自动重启过了……哭

时间: 2024-10-03 01:25:28

Python/Numpy大数据编程经验的相关文章

零基础学大数据编程需要哪些基础?

零基础学大数据编程需要哪些基础?程序员薪酬高.工作环境好,是很多同学向往的职业,让很多非计算机专业的同学羡慕不已.非计算机专业难道就不能成为程序员了吗? 一.零基础学大数据编程需要基础: 1.数学基础 从计算机发展和应用的历史来看计算机的数学模型和体系结构等都是有数学家提出的,最早的计算机也是为数值计算而设计的.因此,要学好计算机就要有一定的数学基础,出学者有高中水平就差不多了. 2.逻辑思维能力的培养 学程序设计要有一定的逻辑思维能力,逻思力的培养要长时间的实践锻炼. 要想成为一名优秀的程序员

浪叫兽大数据工作经验简介

入职公司后,知道自己要从事的是一份数据仓建设工作,从项目经理那里了解到,主要是负责数据的接入,清洗,还有场景的建设. 和普通的新入职场的人一样,我对工作也都是存在恐惧的,而且有焦虑症,因为对工作的未知性,还有也不知道工作的要求是不是很高,自己是否会能在岗位呆下去,真的创造价值,那都是后话. 不怕你恐惧,我随意列举一下我在项目经理给出的PPT里面列举的词,数据仓,数据集市,MPP,Hbase,OGG,ETL,FLUME,历史数据,增量数据,spark,hdfs,strom,hadoop,infa,

Java/Python转大数据,你必须了解的深度学习

深度学习这是当今的热门话题,坚定地投入到人工智能,大数据和分析等领域的广泛行业.目前,Google正在使用语音和图像识别算法深度学习,而Netflix和Amazon正在使用它来了解客户的行为.事实上,你不会相信,但是麻省理工学院的研究人员正在试图用深度学习来预测未来.现在,想象一下,革命化的世界和我们的工作方式,潜在的深入学习有多少.在谈论深度学习突破之前,人们必须了解它与机器学习和人工智能的关系.了解这种关系的最简单的方法是通过下面的图表: 什么 是深度学习 - AI技术时间表 在这里,您可以

一位转行成功并从事5年的大数据的经验分享

本人29岁,从学大数据到现在有5年的时间,我谈一下我的经验分享 我自己的经历:刚开始大数据是看书,一页页的看书,因为身边有一个好的资源,有问题可以问我朋友,后来发现看大数据的零基础书籍很难看下去,很多专业的东西对于一个新手根本就看不懂,没有什么效率.(在这里我个人建议,初学不要看书,我的建议是学完一部分后用书去温习,这样很多东西都可以明白,并且可以查缺补漏) 后来是跟着马士兵的视频学习,那个视频算是经典的,但是现在看的话是多少有些老了,学大数据的时候感觉很多地方根本就不懂,视频上的东西可以看得懂

Mysql千万级大数据查询优化经验 一点课堂(多岸学院)

提高mysql千万级大数据SQL查询优化30条经验(Mysql索引优化注意) 1.对查询进行优化,应尽量避免全表扫描,首先应考虑在 where 及 order by 涉及的列上建立索引. 2.应尽量避免在 where 子句中对字段进行 null 值判断,否则将导致引擎放弃使用索引而进行全表扫描,如:select id from t where num is null可以在num上设置默认值0,确保表中num列没有null值,然后这样查询:select id from t where num=0

python代码 大数据

大数据 - 哈希 教你如何迅速秒杀掉:99%的海量数据处理面试题 http://blog.csdn.net/v_july_v/article/details/7382693 1: import operator 2: import heapq 3:   4: def hashfiles(): 5:   6: files = [] 7: for i in range(0, 10): 8: files.append(file(str(i) + '.txt', 'w')) 9:   10: query

Twitter数据挖掘:如何使用Python分析大数据 (3)

让我们来拉取Twitter账号@NyTimes的最近20条微博. 我们可以创建变量来存放待拉取的微博数量(即count),以及待拉取的用户(即name).然后用这两个参数调用user_timeline()函数.下面是更新后的代码(注意,在代码的顶部应该保持认证和API对象的创建). # 传入认证信息,并创建API对象 api = tweepy.API(auth) # 待拉取微博的用户 name = "nytimes" # 待拉取的微博数量 tweetCount = 20 # 使用上面的

Twitter数据挖掘:如何使用Python分析大数据

我们可以创建变量来存放待拉取的微博数量(即count),以及待拉取的用户(即name).然后用这两个参数调用user_timeline()函数.下面是更新后的代码(注意,在代码的顶部应该保持认证和API对象的创建). # 传入认证信息,并创建API对象 api = tweepy.API(auth) # 待拉取微博的用户 name = "nytimes" # 待拉取的微博数量 tweetCount = 20 # 使用上面的参数,调用user_timeline函数 results = ap

Python Numpy中数据的常用的保存与读取方法

在经常性读取大量的数值文件时(比如深度学习训练数据),可以考虑现将数据存储为Numpy格式,然后直接使用Numpy去读取,速度相比为转化前快很多. 下面就常用的保存数据到二进制文件和保存数据到文本文件进行介绍: 1.保存为二进制文件(.npy/.npz) numpy.save 保存一个数组到一个二进制的文件中,保存格式是.npy 参数介绍 numpy.save(file, arr, allow_pickle=True, fix_imports=True) file:文件名/文件路径 arr:要存