labels
配列を置換後に割り当てたいと考えています。私は以下のようなコードを使用しています。置換後の配列の割り当て
np.random.seed(42)
labels = np.zeros((10,1),dtype=int)
idx = np.random.permutation(len(labels))
labels[idx][1:5] = np.random.randint(0,10,(4,1))
しかし、以下に示すように、ラベルはまだゼロであり、何も割り当てられていません。私は、ラベル[idx]パートがコピーを作成し、割り当てられているものを想像することができます。これを回避するには?
labels
>>> array([[0],
[0],
[0],
[0],
[0],
[0],
[0],
[0],
[0],
[0]])
必要な出力は、このでした:
for i,j in enumerate(idx2):
labels[idx[j]] = a[i]
labels
>>> array([[7],
[2],
[0],
[0],
[0],
[6],
[0],
[4],
[0],
[0]])
なぜ私はあなたがインデックスと値の二重ランダムを使用していたのか理解できませんでした。 – hpaulj
idxがランダム置換を行う場合、argsort部分はそれを通常の順序に戻します。元の順序に戻ってマッピングされる。小さなサンプルでそれをチェックしてください。 'np.random.permutation(5)' –