我有2个数组,为了简单起见,我们假设原始数组是一组随机数:
import numpy as np
a=np.random.rand(N)
然后我从这个数组中采样并随机播放一个子集:
b=np.array() <------size<N
洗牌我没有存储索引值,所以b是
的无序子集是否有一种简单的方法来获取b的原始索引,因此它们与a的顺序相同,例如,如果b的元素2中的索引为4,则创建其赋值的数组。
我可以逐个元素地使用循环检查,但也许有更多的pythonic方式
由于
答案 0 :(得分:2)
我认为计算效率最高的事情是跟踪b
与a
关联的索引,并创建b
。
例如,不是采样a
,而是采用a
:
indices = random.sample(range(len(a)), k) # k < N
b = a[indices]
答案 1 :(得分:0)
关闭机会a
恰好可以排序:
>>> from numpy import array
>>> a = array([1, 3, 4, 10, 11])
>>> b = array([11, 1, 4])
>>> a.searchsorted(b)
array([4, 0, 2])
如果a
没有排序,那么最好不要使用@ unutbu的答案。