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

时间:2015-12-03 10:30:55

标签: python numpy indexing

假设我有两个数组:

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.])

1 个答案:

答案 0 :(得分:0)

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

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