数字の配列がありますa
。b
の対応する要素を取得する回数を指定する2番目の配列があります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] ]
それはまさに何をするかnp.arange(5).repeat([1,0,3,2,0])
です。
これを行う1つの方法は次のとおりです。
res = []
for i in xrange(len(b)):
for j in xrange(b[i]):
out.append(a[i])
res = np.array(res) # optional
それを行うための本当に非効率的な方法はこれです:
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