NumPy在数组操作上的效率优于纯 Python代码吗?

看书说np的数组操作性能比python上的操作性能好,测试了一下,发现不对,是不是我错了?求拍砖。

import datetime
import numpy as np


def numpysum(n):
    a = np.arange(n) ** 2
    b = np.arange(n) ** 3
    c = a + b
    return a, b, c


def pythonsum(n):
    a = list(range(n))
    b = list(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


def main():
    start = datetime.datetime.now()
    s1 = numpysum(10)
    print(s1)
    print((datetime.datetime.now() - start).microseconds)
    start = datetime.datetime.now()

    s2 = pythonsum(10)
    print(s2)
    print((datetime.datetime.now() - start).microseconds)


if __name__ == '__main__':
    main()

输出

Python 3.5.3 (default, Sep 27 2018, 17:25:39) 
Type 'copyright', 'credits' or 'license' for more information
IPython 7.6.1 -- An enhanced Interactive Python. Type '?' for help.
PyDev console: using IPython 7.6.1
Python 3.5.3 (default, Sep 27 2018, 17:25:39) 
[GCC 6.3.0 20170516] on linux
runfile('/home/livingbody/PycharmProjects/knn00/numpy/numpy00.py', wdir='/home/livingbody/PycharmProjects/knn00/numpy')
(array([ 0,  1,  4,  9, 16, 25, 36, 49, 64, 81]), array([  0,   1,   8,  27,  64, 125, 216, 343, 512, 729]), array([  0,   2,  12,  36,  80, 150, 252, 392, 576, 810]))
663
([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])
22

如上所示:numpy 663ms,普通的22ms,什么情况?

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值