【笔记】range函数在py3里面的处理及numpy库效率比较【原创】
今天看了一下,numpy数组操作其中一段代码,主要是测试用纯python和numpy之间的性能问题
在py2环境下,代码如下:
def pysum(n):
a = range(n)
b = range(n)
c = []
i = 0
for i in list(range(len(a))):
a[i] = i ** 2
b[i] = i ** 3
c.append(a[i] + b[i])
return c
c = pysum(10)
py3下报错,如下
'range' object does not support item assignment
可以看出,a = range(n)实际为range(0, n) 为range object,而非列表数组,需要将a转换成列表,a = list(range(n)),例 a = list(range(10))为 a = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
将代码转换成
def pysum(n):
a = list(range(n))
b = list(range(n))
c = []
for i in list(range(len(a))):
a[i] = i ** 2
b[i] = i ** 3
c.append(a[i] + b[i])
return a, b, c #同时输出a, b, c看看结果
pysum(10)
结果为
Out[42]:
([0, 1, 4, 9, 16, 25, 36, 49, 64, 81],
[0, 1, 8, 27, 64, 125, 216, 343, 512, 729],
[0, 2, 12, 36, 80, 150, 252, 392, 576, 810])
用numpy实现
import numpy as np
def npsum(n):
a = np.arange(n) ** 2
b = np.arange(n) ** 3
c = a + b
return c
npsum(10)
比较一下两种实现方式的效率
#效率比较 from datetime import datetime size = 1000 start = datetime.now()
c = pysum(size)
delta = datetime.now() - start
print("The last 2 elements of the sum", c[-2:])
print("PythonSum elapsed time in microseconds", delta.microseconds) start = datetime.now()
c = npsum(size)
delta = datetime.now() - start
print("The last 2 elements of the sum", c[-2:])
print("NumPySum elapsed time in microseconds", delta.microseconds)
输出结果
#用pysum()输出,打印结果如下
The last 2 elements of the sum [995007996, 998001000]
PySum elapsed time in microseconds 2000 #用npsum()输出,打印结果如下
The last 2 elements of the sum [995007996 998001000]
NPSum elapsed time in microseconds 0
所以说用npsum执行的效率远远高于用纯python写出的效率,这在数据分析里面非常重要,特别是在机器学习特别耗计算资源的情况下
【笔记】range函数在py3里面的处理及numpy库效率比较【原创】的更多相关文章
- 学习笔记4-pathon的range()函数和list()函数
使用python的人都知道range()函数很方便,今天再用到他的时候发现了很多以前看到过但是忘记的细节.这里记录一下range(),复习下list的slide,最后分析一个好玩儿的冒泡程序. 这里记 ...
- python学习笔记之——range()函数
range函数的三种用法:>>> range(1,5) # 代表从1到5(不包含5) [1, 2, 3, 4] >>> range(1,5,2) # 代表从1到5, ...
- 迭代器-迭代对象-dir(a)可以查看该数据类型有多少种方法。range(10)在py3里就是一个迭代器,for循环实际就是迭代器的应用
迭代器 我们已经知道,可以直接作用于for循环的数据烈性有以下几种: 一类是集合数据类型,如list.tuple.dict.set.str,bytes等: 一类是generator,数据结构,包括生成 ...
- range()函数的使用
坚持每天学一点,每天进步一点,迟早有一点我会成为大神. 在python中range函数可以返回一系列连续增加的整数,也是一个迭代器. 函数用法:range(开始, 结束, 步进值): #步进值默认为1 ...
- Matlab学习笔记 figure函数
Matlab学习笔记 figure函数 matlab中的 figure 命令,能够创建一个用来显示图形输出的一个窗口对象.每一个这样的窗口都有一些属性,例如窗口的尺寸.位置,等等.下面一一介绍它们. ...
- matlab学习笔记 bsxfun函数
matlab学习笔记 bsxfun函数 最近总是遇到 bsxfun这个函数,前几次因为无关紧要只是大概看了一下函数体去对比结果,今天再一次遇见了这个函数,想想还是有必要掌握的,遂查了些资料总结如下. ...
- 详细记录python的range()函数用法
使用python的人都知道range()函数很方便,今天再用到他的时候发现了很多以前看到过但是忘记的细节.这里记录一下range(),复习下list的slide,最后分析一个好玩儿的冒泡程序. 这里记 ...
- python中xrange()和range()函数的区别使用:
1.range()函数: 函数说明:range([start,] stop[, step]),根据start与stop指定的范围以及step设定的步长,生成一个序列. >>> #ra ...
- Python的range函数详细用法
1. >>> range(1,5) #代表从1到5(不包含5) [1, 2, 3, 4]>>> 2. >>> range(1,5,2) #代表从 ...
随机推荐
- ubuntu1604使用之旅——软件源更新(vim安装)
sudo cp /etc/apt/sources.list /etc/apt/sources.list.backup sudo gedit /etc/apt/sources.list # deb cd ...
- noj装载问题
描述 有两艘船,载重量分别是c1. c2,n个集装箱,重量是wi (i=1…n),且所有集装箱的总重量不超过c1+c2.确定是否有可能将所有集装箱全部装入两艘船. 输入 多个测例,每个测例的输入占 ...
- disjoint set
MAKE-SET.x/ creates a new set whose only member (and thus representative) is x. Since the sets are d ...
- 剑指Offer 18. 二叉树的镜像 (二叉树)
题目描述 操作给定的二叉树,将其变换为源二叉树的镜像. 输入描述: 二叉树的镜像定义:源二叉树 8 / \ 6 10 / \ / \ 5 7 9 11 镜像二叉树 8 / \ 10 6 / \ / \ ...
- SQL注入之Sqli-labs系列第三十六关(基于宽字符逃逸GET注入)和三十七关(基于宽字节逃逸的POST注入)
0X1 查看源码 function check_quotes($string) { $string= mysql_real_escape_string($string); return $string ...
- 【坑】https证书链不完整的坑
支付宝支付回调https失败,微信分享https连接在微信里打开空白,而chrome等浏览器访问正常. 是的,以上问题我作为半个运维在项目中遇到了,就是由于https证书链不完整引起的. 好吧,其实压 ...
- Redhat 6.5安装JDK和Tomcat小记
下面将今天在Linux 6.5环境安装JDK和Tomcat的过程记录下来,以备以后查用. Linux环境:Redhat 6.5 JDK版本:7u79 Tomcat版本:7.0.70 1.下载JDK文件 ...
- Mathematics for Computer Science (Eric Lehman / F Thomson Leighton / Albert R Meyer 著)
I Proofs1 What is a Proof?2 The Well Ordering Principle3 Logical Formulas4 Mathematical Data Types5 ...
- [转]PostgreSQL命令行使用手册
启动pgsl数据库 1 pg_ctl -D /xx/pgdata start 查看pgsl版本 1 pg_ctl --version 命令行登录数据库 1 psql -U username -d db ...
- [转]SQL server2008 导入超大SQL脚本文件(超过10M)
同事给我一个sqlserver的学习库,sql脚本导出有300m,gui执行有内存溢出的错误报出来,所以问了一下度娘,学而时习之:) 1. SQL server2008 导入超大SQL脚本文件(超过1 ...