Python 重复迭代numpy数组相同子集的最快方法
我有一个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
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]