关于Python中的向量相加和numpy中的向量相加效率对比

直接使用Python来实现向量的相加

# -*-coding:utf-8-*-
#向量相加
def pythonsum(n):
 a = range(n)
 b = range(n)
 c = []
 for i in range(len(a)):
  a[i] = i**2
  b[i] = i**3
  c.append(a[i]+b[i])
 return a,b,c

print pythonsum(4),type(pythonsum(4))
for arg in pythonsum(4):
 print arg

从这里这个输出结果可以看得出来,return多个值时,是以列表的形式返回的

([0, 1, 4, 9], [0, 1, 8, 27], [0, 2, 12, 36]) <type 'tuple'>
[0, 1, 4, 9]
[0, 1, 8, 27]
[0, 2, 12, 36]

使用numpy包实现两个向量的相加

def numpysum(n):
 a = np.arange(n) ** 2
 b = np.arange(n) ** 3
 c = a + b
 return a,b,c
(array([0, 1, 4, 9]), array([ 0, 1, 8, 27]), array([ 0, 2, 12, 36])) <type 'function'>
[0 1 4 9]
[ 0 1 8 27]
[ 0 2 12 36]

比较用Python实现两个向量相加和用numpy实现两个向量相加的情况

size = 1000
start = datetime.now()
c = pythonsum(size)
delta = datetime.now() - start
# print 'The last 2 elements of the sum',c[-2:]
print 'pythonSum elapsed time in microseconds',delta.microseconds

size = 1000
start1 = datetime.now()
c1 = numpysum(size)
delta1 = datetime.now() - start1
# print 'The last 2 elements of the sum',c1[-2:]
print 'numpySum elapsed time in microseconds',delta1.microseconds

从下面程序运行结果我们可以看到在处理向量是numpy要比Python计算高出不知道多少倍

pythonSum elapsed time in microseconds 1000
numpySum elapsed time in microseconds 0

以上这篇关于Python中的向量相加和numpy中的向量相加效率对比就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持我们。

(0)

相关推荐

  • 几个提升Python运行效率的方法之间的对比

    在我看来,python社区分为了三个流派,分别是python 2.x组织,3.x组织和PyPy组织.这个分类基本上可以归根于类库的兼容性和速度.这篇文章将聚焦于一些通用代码的优化技巧以及编译成C后性能的显著提升,当然我也会给出三大主要python流派运行时间.我的目的不是为了证明一个比另一个强,只是为了让你知道如何在不同的环境下使用这些具体例子作比较. 使用生成器 一个普遍被忽略的内存优化是生成器的使用.生成器让我们创建一个函数一次只返回一条记录,而不是一次返回所有的记录,如果你正在使用pyth

  • 对python中矩阵相加函数sum()的使用详解

    假如矩阵A是n*n的矩阵 A.sum()是计算矩阵A的每一个元素之和. A.sum(axis=0)是计算矩阵每一列元素相加之和. A.Sum(axis=1)是计算矩阵的每一行元素相加之和. 以上这篇对python中矩阵相加函数sum()的使用详解就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持我们.

  • 举例讲解Python中字典的合并值相加与异或对比

    字典合并值相加 在统计汇总游戏数据的时候,有些数据是是每天用字典存的,当我要对多天汇总的时候,就需要合并字典了. 如果key相同的话它们的值就相加. 不能用update方法,因为用update方法则相同的key的值会覆盖,而不是相加. 千言不如一码. def union_dict(*objs): _keys = set(sum([obj.keys() for obj in objs],[])) _total = {} for _key in _keys: _total[_key] = sum([

  • 关于Python中的向量相加和numpy中的向量相加效率对比

    直接使用Python来实现向量的相加 # -*-coding:utf-8-*- #向量相加 def pythonsum(n): a = range(n) b = range(n) c = [] for i in range(len(a)): a[i] = i**2 b[i] = i**3 c.append(a[i]+b[i]) return a,b,c print pythonsum(4),type(pythonsum(4)) for arg in pythonsum(4): print arg

  • 详解将Pandas中的DataFrame类型转换成Numpy中array类型的三种方法

    在用pandas包和numpy包对数据进行分析和计算时,经常用到DataFrame和array类型的数据.在对DataFrame类型的数据进行处理时,需要将其转换成array类型,是以下列出了三种转换方法. 首先导入numpy模块.pandas模块.创建一个DataFrame类型数据df import numpy as np import pandas as pd df=pd.DataFrame({'A':[1,2,3],'B':[4,5,6],'C':[7,8,9]}) 1.使用DataFra

  • 详解Python NumPy中矩阵和通用函数的使用

    目录 一.创建矩阵 二.从已有矩阵创建新矩阵 三.通用函数 四.算术运算 在NumPy中,矩阵是 ndarray 的子类,与数学概念中的矩阵一样,NumPy中的矩阵也是二维的,可以使用 mat . matrix 以及 bmat 函数来创建矩阵. 一.创建矩阵 mat 函数创建矩阵时,若输入已为 matrix 或 ndarray 对象,则不会为它们创建副本. 因此,调用 mat() 函数和调用 matrix(data, copy=False) 等价. 1) 在创建矩阵的专用字符串中,矩阵的行与行之

  • 深入解析NumPy中的Broadcasting广播机制

    前言 在吴恩达老师的深度学习专项课程中,老师有提到NumPy中的广播机制,同时那一周的测验也有涉及到广播机制的题目.那么,到底什么是NumPy中的广播机制? 官方文档 接下来到了看官方文档的时间. Array Broadcasting in Numpy 广播机制概述 让我们探索numpy中一个更高级的概念,这个概念被称为广播. 广播展现了NumPy在算术运算期间是如何处理具有不同形状的数组的. 受到某些约束,较小的阵列将在较大的阵列上"广播",以使它们具有相同形状. 广播提供了一种数组

  • NumPy中的维度Axis详解

    浅谈NumPy中的维度Axis NumPy中的维度是一个很重要的概念,很多函数的参数都需要给定维度Axis,如何直观的理解维度呢?我们首先以二维数组为例进行说明,然后推广到多维数组. (有人将ndim属性叫维度,将axis叫轴,我还是习惯将axis称之为维度,axis=0称为第一个维度) 二维数组的列子 下面是一个二维数组的列子: In [1]: import numpy as np In [2]: x = np.random.randint(0, 9, (2, 3)) In [3]: x Ou

  • Python numpy中矩阵的基本用法汇总

    Python矩阵的基本用法 mat()函数将目标数据的类型转化成矩阵(matrix) 1,mat()函数和array()函数的区别 Numpy函数库中存在两种不同的数据类型(矩阵matrix和数组array),都可以用于处理行列表示的数字元素,虽然他们看起来很相似,但是在这两个数据类型上执行相同的数学运算可能得到不同的结果,其中Numpy函数库中的matrix与MATLAB中matrices等价. 直接看一个例子: import numpy as np a = np.mat('1 3;5 7')

  • 在python Numpy中求向量和矩阵的范数实例

    np.linalg.norm(求范数):linalg=linear(线性)+algebra(代数),norm则表示范数. 函数参数 x_norm=np.linalg.norm(x, ord=None, axis=None, keepdims=False) ①x: 表示矩阵(也可以是一维) ②ord:范数类型 向量的范数: 矩阵的范数: ord=1:列和的最大值 ord=2:|λE-ATA|=0,求特征值,然后求最大特征值得算术平方根 ord=∞:行和的最大值 ③axis:处理类型 axis=1表

  • 对numpy中向量式三目运算符详解

    如果用到数据筛选功能,可以使用x if condition else y的逻辑实现.如果使用的是纯Python,可以使用不断迭代的方式对每一组元素组合进行相应的判断筛选.不过,如果使用numpy中的向量化计可以大大加速运算的过程. 在numpy中有一个这个三目运算的向量版本numpy.where.where方法可以接收三个参数,第一个参数为条件向量,而第二.第三个参数可以是矩阵也可以是标量.接下来做一下相应功能的纯Python功能实现以及向量方式实现. 记录如下: In [76]: xarr =

  • 浅谈Python中range与Numpy中arange的比较

    本文先比较range与arange的异同点,再详细介绍各自的用法,然后列举了几个简单的示例,最后对xrange进行了简单的说明. 1. range与arange的比较 (1)相同点:A.参数的可选性.默认缺省值是一样的:B.结果均包括开始值,不包括结束值: C.arange的参数为整数是,与range函数等价:D.都具备索引查找.要素截取等操作. (2)不同点:A.range函数的参数只能为整数,arange的参数为数值型,包括整数和浮点数: B.输出的数据类型不同,range的输出为列表(li

  • python numpy中setdiff1d的用法说明

    一.函数解释 setdiff1d(ar1, ar2, assume_unique=False) 1.功能:找到2个数组中集合元素的差异. 2.返回值:在ar1中但不在ar2中的已排序的唯一值. 3.参数: ar1:array_like 输入数组. ar2:array_like 输入比较数组. assume_unique:bool.如果为True,则假定输入数组是唯一的,即可以加快计算速度. 默认值为False. 二.具体示例 1.assume_unique = False的情况: a = np.

随机推荐