根据另一个数组对齐numpy数组

时间:2017-01-29 17:37:34

标签: python arrays numpy

我有一个包含任意整数的numpy数组a,我有另一个数组b,(它始终是a的子集,但是b中的数字顺序1}}与a不同。我想按照b中显示的顺序对齐a的元素。

a = np.array([4,2,6,5,8,7,10,12]);
b = np.array([10,6,2,12]),

我希望b对齐为[2,6,10,12]。我怎么能有效地在numpy中做到这一点?

1 个答案:

答案 0 :(得分:4)

方法#1: np.in1d的一种方法,假设a中没有重复项 -

a[np.in1d(a,b)]

更好的示例案例,其中a中的元素受到干扰,因此未针对常见元素进行排序以呈现多种情况 -

In [103]: a
Out[103]: array([ 4, 12,  6,  5,  8,  7, 10,  2])

In [104]: b
Out[104]: array([10,  6,  2, 12])

In [105]: a[np.in1d(a,b)]
Out[105]: array([12,  6, 10,  2])

方法#2:使用np.searchsorted -

的一种方法
sidx = a.argsort()
out = a[np.sort(sidx[np.searchsorted(a,b,sorter=sidx)])]