如何以有效的方式将一个数组映射到另一个数组

时间:2019-07-05 08:28:26

标签: python python-3.x numpy

对于这4个数组, a1 a2 a3

a1 = [5,3,0,2,4,2,...,...]
a2 = [5,3,0,2,4,2,...,...] => store index number, correspond value is in b
a3 = [5,3,0,2,4,2,...,...]

b = [250,300,1,2,70,23,...,...] 

我想找到一种生成像这样的数组的有效方法:

 c1 = [23,2,250,1,70,1,...,...]
 c2 = [23,2,250,1,70,1,...,...]
 c3 = [23,2,250,1,70,1,...,...]

但是在我看来,使用3个Forloop解决这个问题太慢了。 我想找到一种有效的解决方法。 例如,同时映射3个数组。

2 个答案:

答案 0 :(得分:1)

您要做的是使用列表a1a2a3作为列表b的索引。您可以使用list comprehensions在Python中有效地做到这一点。在您的示例中,这看起来像

c1 = [b[i] for i in a1]

如果您有大量的a列表,那么最有效的过程就是将它们写入一个同样可以循环通过的组合数组的行中。

答案 1 :(得分:1)

这对您有用吗?

c1,c2,c3 = [list(map(lambda x:b[x],array)) for array in [a1,a2,a3]]
相关问题