Python-如何基于索引数组从数组中提取元素?

时间:2018-10-11 22:40:25

标签: python arrays extraction

比方说,我有一个元素列表X和一个索引Y

X = [1, 2, 3, 4, 5, 6, 7]
Y = [0, 3, 4]

Python中是否有一个函数可以根据X中提供的索引从Y中提取元素?执行后,X将是:

X = [1, 4, 5]

3 个答案:

答案 0 :(得分:4)

X = [X[index] for index in Y]

这是列表理解;您可以查找该主题以了解更多信息。

答案 1 :(得分:1)

@Prune提供的列表理解是使用纯python的方法。如果您不介意numpy,则只需使用其索引方案可能会更容易:

import numpy as np
>>> np.array(X)[Y]
array([1, 4, 5])

答案 2 :(得分:1)

您可以将list.__getitem__map一起使用:

X = [1, 2, 3, 4, 5, 6, 7]
Y = [0, 3, 4]

res = list(map(X.__getitem__, Y))  # [1, 4, 5]

或者,如果您愿意使用第三方库,则可以使用NumPy:

import numpy as np

X = np.array([1, 2, 3, 4, 5, 6, 7])
res = X[Y]  # array([1, 4, 5])