Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/351.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 有没有一种方法可以根据列表的基本索引对列表进行切片?_Python_Numpy_Slice_Numpy Slicing - Fatal编程技术网

Python 有没有一种方法可以根据列表的基本索引对列表进行切片?

Python 有没有一种方法可以根据列表的基本索引对列表进行切片?,python,numpy,slice,numpy-slicing,Python,Numpy,Slice,Numpy Slicing,让 是否有一种通过b切片a的Pythonic方法 i、 e 产出将是 a[b] 那么: result=[a[i]代表b中的i] 因为有numpy标签: [3, 4, ... 90, 98] 时间性能比较: import numpy as np a = np.array(a) b = np.array(b) result = a[b] 列表理解 import numpy as np N=100_000 a = list(range(N)) b = list(range(1, N, 3))

是否有一种通过
b
切片
a
的Pythonic方法

i、 e

产出将是

a[b]
那么:

result=[a[i]代表b中的i]

因为有numpy标签:

[3, 4, ... 90, 98]
时间性能比较:

import numpy as np
a = np.array(a)
b = np.array(b)

result = a[b]
列表理解

import numpy as np
N=100_000

a = list(range(N))
b = list(range(1, N, 3))

c = np.array(a)
d = np.array(b)
Numpy

%timeit [a[i] for i in b]
2.31 ms ± 456 µs per loop (mean ± std. dev. of 7 runs, 100 loops each)
通过一个简单的测试,我们可以看到,对于长度为100_000的数组,numpy要快20倍,但是这不是一个公平的比较,因为我没有考虑导入库和将列表转换为数组的时间


最后,实际上没有必要将
b
转换为numpy数组。

这是否回答了您的问题?
%timeit [a[i] for i in b]
2.31 ms ± 456 µs per loop (mean ± std. dev. of 7 runs, 100 loops each)
%timeit c[d]
115 µs ± 7.57 µs per loop (mean ± std. dev. of 7 runs, 1000 loops each)