Python 重复迭代numpy数组相同子集的最快方法

Python 重复迭代numpy数组相同子集的最快方法,python,numpy,Python,Numpy,我有一个numpy数组和一个索引列表,我想迭代多次 下面的代码符合我的要求,但似乎效率很低: import numpy as np a = np.random.random(10) indices = [8, 4, 2] for _ in range(10): # Some changes to a sa = np.array([a[i] for i in indices]) # Some actions that use sa 是否有更好的方法来定义sa

我有一个numpy数组和一个索引列表,我想迭代多次

下面的代码符合我的要求,但似乎效率很低:

import numpy as np

a = np.random.random(10)
indices = [8, 4, 2]

for _ in range(10):
    
    # Some changes to a
    sa = np.array([a[i] for i in indices])
    # Some actions that use sa

是否有更好的方法来定义sa?有没有一种方法,我不必在每次迭代时重新定义
sa
,而是直接指向
a
的选定索引?

一般说明-如果您有任何东西可以在
for
循环中有效运行,无需在一次迭代中进行复杂计算-可能可以在
numpy
中对其进行矢量化

话虽如此,您正在寻找的是:

a[索引]

sa=np.intersect1d(a,索引)
?谢谢!这在上面的示例中有效,但不基于索引进行选择。我更改了示例,使
a
的值与其索引不同。谢谢!但这仍然需要在每次迭代时生成一个新数组,对吗?不,您只需将迭代替换为
sa=a[index]