Arrays 理解python中的切片
以上代码的另一个版本Arrays 理解python中的切片,arrays,python-2.7,numpy,slice,Arrays,Python 2.7,Numpy,Slice,以上代码的另一个版本 import numpy as np x = np.arange(10**5) for i in xrange(x.size): foo(x[3000:40000]) 第二个代码会更快吗?我倾向于用C语言的指针来思考(因此实际上第一个可能更快),但我知道python不是C语言 好的,这个帖子 回答我的问题。阅读本文,尤其是本节 从页面[关于切片] 一切都可以通过改变形状、步幅以及可能的调整数据指针来表示! 从不复制数据 因此,创建切片的开销很小:构建一个Pyt
import numpy as np
x = np.arange(10**5)
for i in xrange(x.size):
foo(x[3000:40000])
第二个代码会更快吗?我倾向于用C语言的指针来思考(因此实际上第一个可能更快),但我知道python不是C语言
好的,这个帖子
回答我的问题。阅读本文,尤其是本节
从页面[关于切片]
一切都可以通过改变形状、步幅以及可能的调整数据指针来表示!
从不复制数据
因此,创建切片的开销很小:构建一个Python对象,该对象存储几个元组和一个指向数据的指针
在第一个代码示例中,每次都在循环中创建切片。在第二个示例中,创建一次切片。对于您选择编写的大多数函数
foo
,差异可能可以忽略不计。第二个代码是否更快?
您可以使用timeit
回答您的问题。是的,我知道,它告诉我哪一个更快。但它并没有告诉我切片在python中是如何工作的。
import numpy as np
x = np.arange(10**5)
slice_of_x = x[3000:40000]
for i in xrange(x.size):
foo(slice_of_x)