我有一对数组(数组为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数组中的每个元素,我检查它是否包含在任何子数组中我存储了值。
答案 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])