python 时间函数 毫秒_为什么numpy.apply_along_axis似乎比Python循环慢?我们来分析

欢迎各位小哥哥小姐姐阅读本的文章,对大家学习有帮助,请点赞加关注哦!!!!!!!!!!

您的点赞和关注将是我持续更新的动力呢.^v^

有不懂的问题可以私聊我哦!

分析

当numpy的numpy.apply_along_axis()函数优于简单的Python循环时,有点困惑。例如,考虑具有许多行的矩阵的情况,并且您希望计算每行的总和:

0f712f117517352d71aae117023898b7.png
x = np.ones([100000, 3])sums1 = np.array([np.sum(x[i,:]) for i in range(x.shape[0])])sums2 = np.apply_along_axis(np.sum, 1, x)

在这里,我甚至使用内置的numpy函数,np.sum但计算sums1(Python循环)需要不到400毫秒而calculate sums2(apply_along_axis)需要超过2000毫秒(Windows上的NumPy 1.6.1)。通过进一步的比较方式,R的rowMeans函数通常可以在不到20ms的时间内完成(我很确定它正在调用C代码),而类似的R函数apply()可以在大约600ms内完成。

f5ccb9f5658022691af7735c8228f7d2.png

解决方案

np.sum取一个axis参数,这样你就可以简单地计算总和

sums3 = np.sum(x, axis=1)

这比你提出的两种方法快得多。

c9b0b18309abbbec048aed0e5503d014.png

(至于为什么apply_along_axis更慢 - 我不知道,可能是因为该函数是用纯Python编写的,并且更通用,因此比数组版本更少的优化机会。)

最后多说一句,小编是一名python开发工程师,这里有我自己整理了一套最新的python系统学习教程,包括从基础的python脚本到web开发、爬虫、数据分析、数据可视化、机器学习等。想要这些资料的可以关注小编,并在后台私信小编:“01”即可领取。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值