Come posso mescolare un array multidimensionale per riga solo in Python (quindi non mescolare le colonne).Numpy shuffle array multidimensionale per riga, mantenere invariato l'ordine delle colonne
Sto cercando la soluzione più efficiente, perché la mia matrice è molto grande. È anche possibile farlo in modo estremamente efficiente sull'array originale (per risparmiare memoria)?
Esempio:
import numpy as np
X = np.random.random((6, 2))
print(X)
Y = ???shuffle by row only not colls???
print(Y)
Cosa mi aspetto ora è matrice originale:
[[ 0.48252164 0.12013048]
[ 0.77254355 0.74382174]
[ 0.45174186 0.8782033 ]
[ 0.75623083 0.71763107]
[ 0.26809253 0.75144034]
[ 0.23442518 0.39031414]]
uscita mischiare le righe non cols esempio:
[[ 0.45174186 0.8782033 ]
[ 0.48252164 0.12013048]
[ 0.77254355 0.74382174]
[ 0.75623083 0.71763107]
[ 0.23442518 0.39031414]
[ 0.26809253 0.75144034]]
Opzione 1: vista mescolata su un array. Immagino che significherebbe un'implementazione personalizzata. (quasi) nessun impatto sull'utilizzo della memoria, Obv. un certo impatto in fase di esecuzione. Dipende davvero da come intendi usare ** questa matrice. –
Opzione 2: shuffle array in posizione. 'np.random.shuffle (x)', i documenti dichiarano che "questa funzione mescola solo l'array lungo il primo indice di un array multidimensionale", che è abbastanza buono per te, giusto? Ovvero, un po 'di tempo preso all'avvio, ma da quel momento, è veloce come la matrice originale. –
Confrontare con 'np.random.shuffle (x)', ** l'indice di shuffling di nd-array e ottenere dati dall'indice mescolato ** è un modo più efficiente per risolvere questo problema. Per maggiori dettagli, confrontare la mia risposta [qui sotto] (http://stackoverflow.com/questions/35646908/numpy-shuffle-multidimensional-array-by-row-only-keep-column-order-unchanged/43716153#43716153) –