在哪些方面,Numpy的速度反而比不上原始Python
1个回答
展开全部
你这个问题其实不说明numpy比原始的Python慢,而是说明了数据转换是有性能损耗的。
numpy内部存储数据是和C语言一致的,比如一个这里100个np.float64的元素就是内存中紧密排列的100个double数字。
而
Python里的所有东西,包括简单的数字,全都是PyObject的指针,每个PyObject都要在堆上分配,记录引用计数,类型等许多
bookkeeping的数据。你访问a[0]时,这个数字本来只是一个简单的double,但是返回到Python里面就需要在堆上分配并加很多额外信
息;而b[0]不同,Python里的list本来就是PyObject *的数组,这些额外的信息都创建好了,所以更快。
这唯一告诉我们的就是,不要把numpy的计算和Python内置的功能混在一起用,除了到了最后输入输出的时候。
numpy内部存储数据是和C语言一致的,比如一个这里100个np.float64的元素就是内存中紧密排列的100个double数字。
而
Python里的所有东西,包括简单的数字,全都是PyObject的指针,每个PyObject都要在堆上分配,记录引用计数,类型等许多
bookkeeping的数据。你访问a[0]时,这个数字本来只是一个简单的double,但是返回到Python里面就需要在堆上分配并加很多额外信
息;而b[0]不同,Python里的list本来就是PyObject *的数组,这些额外的信息都创建好了,所以更快。
这唯一告诉我们的就是,不要把numpy的计算和Python内置的功能混在一起用,除了到了最后输入输出的时候。
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询