トレーニングセットからランダムに要素を選択する関数を記述したいのですが、ビン確率提供されました。セットインデックスを11のビンに分割する、作成するカスタム確率彼らのために。
bin_probs = [0.5, 0.3, 0.15, 0.04, 0.0025, 0.0025, 0.001, 0.001, 0.001, 0.001, 0.001]
X_train = list(range(2000000))
train_probs = bin_probs * int(len(X_train) / len(bin_probs)) # extend probabilities across bin elements
train_probs.extend([0.001]*(len(X_train) - len(train_probs))) # a small fix to match number of elements
train_probs = train_probs/np.sum(train_probs) # normalize
indices = np.random.choice(range(len(X_train)), replace=False, size=50000, p=train_probs)
out_images = X_train[indices.astype(int)] # this is where I get the error
次のエラーが発生します:
TypeError: only integer scalar arrays can be converted to a scalar index with 1D numpy indices array
作成したインデックスの配列をすでに確認しているので、これは奇妙だと思います。1-Dそれは整数、そしてそれはスカラー。
何が足りないのでしょうか?
注:indices
で合格しようとしましたastype(int)
。同じエラーが発生しました。
ベストアンサー1
エラー メッセージは多少誤解を招くかもしれませんが、要点は、これはX_train
NumPy 配列ではなくリストであるということです。配列のインデックスは使用できません。まず配列にします。
out_images = np.array(X_train)[indices.astype(int)]