Ich möchte mein labels
Array nach der Permutation zuweisen. Ich verwende einen Code ähnlich wie unten.Array nach Permutation zuweisen
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))
Wie jedoch unten zu sehen ist, sind die Beschriftungen immer noch Null und es wurde nichts zugewiesen. Ich kann mir nur vorstellen, dass der labels [idx] -Teil eine Kopie erstellt und das was zugewiesen wird. Wie umgehe ich das?
labels
>>> array([[0],
[0],
[0],
[0],
[0],
[0],
[0],
[0],
[0],
[0]])
die erforderliche Ausgabe war:
for i,j in enumerate(idx2):
labels[idx[j]] = a[i]
labels
>>> array([[7],
[2],
[0],
[0],
[0],
[6],
[0],
[4],
[0],
[0]])
Ich konnte nicht herausfinden, warum Sie die doppelte zufällige - von Index und Wert. – hpaulj
Wenn das Idx die zufällige Permutation durchführt, setzt der Argsort-Teil es in der normalen Reihenfolge zurück. d.h. die Zuordnung zurück zur ursprünglichen Reihenfolge. schau es dir mit einer kleinen Probe an. 'n.random.permutation (5)' –