Python 使用NumPy中的频率数组检索数组元素

Python 使用NumPy中的频率数组检索数组元素,python,numpy,Python,Numpy,我有一个数字数组,a。我还有第二个数组,b,指定我要在a中检索相应元素的次数。如何做到这一点?在这种情况下,输出的顺序并不重要 import numpy as np a = np.arange(5) b = np.array([1,0,3,2,0]) # desired output = [0,2,2,2,3,3] # i.e. [a[0], a[2], a[2], a[2], a[3], a[3] ] 一种非常低效的方法是: import numpy as np a = np.aran

我有一个数字数组,
a
。我还有第二个数组,
b
,指定我要在
a
中检索相应元素的次数。如何做到这一点?在这种情况下,输出的顺序并不重要

import numpy as np

a = np.arange(5)
b = np.array([1,0,3,2,0])

# desired output = [0,2,2,2,3,3]
# i.e. [a[0], a[2], a[2], a[2], a[3], a[3] ]

一种非常低效的方法是:

import numpy as np

a = np.arange(5)
b = np.array([1,0,3,2,0])

res = []
i = 0
for val in b:
    for aa in range(val):
        res.append(a[i])
    i += 1
print res

这正是np.arange(5)重复([1,0,3,2,0])所做的。

这里有一种方法:

res = []
for i in xrange(len(b)):
    for j in xrange(b[i]):
        out.append(a[i])

res = np.array(res)  # optional
可能重复的