我一直在研究numpy数组的基准测试,因为当我试图在脚本中用numpy数组替换python数组时,得到的结果比预期的要慢。在

我知道我错过了什么,我希望有人能澄清我的无知。在

我创建了两个函数并计时NUM_ITERATIONS = 1000

def np_array_addition():

np_array = np.array([1, 2])

for x in xrange(NUM_ITERATIONS):

np_array[0] += x

np_array[1] += x

def py_array_addition():

py_array = [1, 2]

for x in xrange(NUM_ITERATIONS):

py_array[0] += x

py_array[1] += x

结果:

^{pr2}$

什么给予?是什么导致了经济的大幅放缓?我想如果我使用静态大小的数组,numpy的速度至少是相同的。在

谢谢!在

更新:

numpy数组访问速度慢一直困扰着我,我想“嘿,它们只是内存中的数组,对吧?辛顿应该解决这个问题!”在

它做到了。这是我修改后的基准import numpy as np

cimport numpy as np

ctypedef np.int_t DTYPE_t

NUM_ITERATIONS = 200000

def np_array_assignment():

cdef np.ndarray[DTYPE_t, ndim=1] np_array = np.array([1, 2])

for x in xrange(NUM_ITERATIONS):

np_array[0] += 1

np_array[1] += 1

def py_array_assignment():

py_array = [1, 2]

for x in xrange(NUM_ITERATIONS):

py_array[0] += 1

py_array[1] += 1

我将np_array重新定义为cdef np.ndarray[DTYPE_t, ndim=1]print(timeit(py_array_assignment, number=3))

# 0.03459

print(timeit(np_array_assignment, number=3))

# 0.00755

这是因为python也在优化python函数。纯python中python函数的计时是print(timeit(py_array_assignment, number=3))

# 0.12510

17倍加速。当然,这是个愚蠢的例子,但我认为它很有教育意义。在

python数组操作加法_Numpy数组索引和/或加法似乎是相关推荐

  1. python numpy矩阵切片_Numpy数组的索引与切片和变形拼接分裂

    1.概述 今天我们来讲一下Numpy数组的索引与切片,numpy数组的索引与切片和Python中的切片与索引的作用相同,可以快速的取出数据,进行下一步的运用或者查看,但是两种切片还有一些不同的地方.另 ...

  2. python 矩阵列拼接_numpy数组拼接简单示例

    NumPy数组是一个多维数组对象,称为ndarray.其由两部分组成: ·实际的数据 ·描述这些数据的元数据 大部分操作仅针对于元数据,而不改变底层实际的数据. 关于NumPy数组有几点必需了解的: ...

  3. Python数组操作将一维数组变成二维数组

    一.问题 我们在进行数组操作的时候会遇到将一个低维的数组变成一个高维的素数组 二.解决 第一种方法 基本思路就是将低维数组进行等长的循环,在第一次为零的情况下,需要添加一个[]数组,原因是将它的基本框 ...

  4. python构造数组并命名_Numpy数组追加命名列

    np.core.records在创建和操作结构化数组方面有一些很好的函数,但是知道如何从头开始构造这样的数组也是很好的.在 您的genfromtxt已从一个包含简单字符串值列的文件中读取.我可以用字符 ...

  5. B10_NumPy数组操作、修改数组形状、翻转数组、修改数组维度、连接数组、分割数组、数组元素的添加与删除

    NumPy数组操作 Numpy 中包含了一些函数用于处理数组,大概可分为以下几类: 修改数组形状 翻转数组 修改数组维度 连接数组 分割数组 数组元素的添加与删除 修改数组形状 函数 描述 resha ...

  6. php的数组操作,PHP的数组操作

    1. 初始化 1.1 array()枚举成员 $products = array('Tires', 'Oil', 'Spark Plugs'); $prices = array('Tires' =&g ...

  7. python对numpy数组求导_NumPy数组计算——python

    一.通用函数运算 (一),数组的运算 对于一个数组,可以直接用加+,减-,乘*,除/,逻辑非,指数运算符 **,其结果就是数组里面每一个元素运算的结果. (二),NumPy实现的算术运算符 1.加法运 ...

  8. python 数组去重复_numpy数组去掉重复的行,保留唯一的行数据

    有以下numpy.array数据:>>> original_array # array([[1, 1, 1, 0, 0, 0], [0, 1, 1, 1, 0, 0], [0, 1, ...

  9. python运算学习之Numpy ------ 数组操作:连接数组、拆分数组 、广播机制、结构化数组、文件贮存与读写、np.where、数组去重...

    数组的连接: 1 # 连接数组 2 A = np.zeros((3, 4)) 3 B = np.ones_like(A) 4 print(A, "\n-------分割符--------\n ...

最新文章

  1. TensorRT-优化-原理
  2. apache 不执行PHP,显示代码
  3. HttpClien GetPost
  4. 小波变换理解:消失矩、支撑长度的理解
  5. Angular ɵɵelementStart和ɵɵText的工作原理
  6. python文件编译_编译Python文件
  7. ELK学习笔记之Logstash详解
  8. apollo动态切换mysql数据源_log4j2从Apollo初始化配置并可动态变更
  9. ~~分解质因数法求组合数
  10. python 使用迭代来创建集合
  11. 怎么样更好的做好站内的优化
  12. 【Firewalld(Iptables)】
  13. CAD一键统计所有线段长度
  14. 怎样注册完申请个人电子邮箱?2022邮箱号码大全速看
  15. 【loadrunner】——利用loadrunner进行压力测试
  16. Eureka注册中心配置登录验证
  17. 2022最新200道软件测试面试题
  18. 短信群发的频率应该是多少
  19. 非常值得欣赏的15个HTML5网站
  20. 赫赫大名的A*寻路算法(vb.net版本)

热门文章

  1. 编译预处理 -- 带参数的宏定义--【原创】
  2. linux下挂载U盘过程
  3. Spread for ASP.NET技术白皮书
  4. 《SAP HANA平台应用开发》—第3章3.1节信息建模
  5. Java与WCF交互(一):Java客户端调用WCF服务
  6. iOSunicode转中文
  7. Bootstrap系列 -- 38. 基础导航条
  8. 中国象棋人机博弈程序(扁平化棋局) C语言实现
  9. 最简易的JQUERY折叠菜单 有预览效果
  10. [CTO札记]惊讶于警察尚未用LBS(手机定位服务)来追踪疑犯