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)