从同伴那里获得numpy子阵列中的一个数字

时间:2014-08-01 00:55:46

标签: python arrays numpy

我有一对数组(数组为2的子数组),如下所示:

pairs = np.array([[1, 2],[5, 12],[9, 33],[9, 1],[34,7]])

和peers数组,如下所示:

nums = np.array([1,12,9])

我想要做的是恢复num数组中包含的数字的对等体。结果应该是

result = np.array([2, 5, 33, 9, 1])

如何使用numpy函数实现这一目标?我现在使用的是懒惰比较(实际使用列表),对于nums数组中的每个元素,我检查它是否包含在任何子数组中我存储了值。

1 个答案:

答案 0 :(得分:5)

如果元素的顺序无关紧要,您可以轻松使用:

>>> np.concatenate((pairs[:,1][np.in1d(pairs[:,0], nums)], 
                    pairs[:,0][np.in1d(pairs[:,1], nums)]))
array([ 2, 33,  1,  5,  9])

修改

要保存订单,您可以使用advanced indexing

>>> pairs[np.in1d(pairs, nums).reshape((pairs.shape[0],2))[:,[1,0]]]
array([ 2,  5, 33,  9,  1])