2015-12-03 67 views
1

假设我有两个数组:如何通过结果中的索引将两个数组合并为一个?

In [41]: x = np.array([1, 4, 9]) 
In [42]: y = np.array([3, 5, 7, 11]) 

,它们的指标结果数组中:

In [43]: ix = [1, 3, 4] 
In [44]: iy = [0, 2, 5, 6] 

结果阵列应该是r = array([ 3, 1, 5, 4, 9, 7, 11])其满足all(r[ix] == x)all(r[iy] = y)。我已经知道了详细的解决方案,并且我想找到一个更好的解决方案(可能使用类似np.wherenp.select的一行解决方案)。

In [45]: r = np.empty(shape=len(x)+len(y)) 
In [46]: r[ix] = x; r[iy] = y; r 
Out[46]: array([ 3., 1., 5., 4., 9., 7., 11.]) 
+3

我认为你的方式已经是最好的方式来做到这一点。 –

回答

0

np.array([x[1] for x in sorted(zip(ix, x) + zip(iy, y)))]

但我不知道这是否是最佳的或可能有numpy的进一步优化。

相关问题