Używam random.shuffle
do przetasowania tablicy 2D numpy
. Spotkałem się z następującym problemem:python: dlaczego random.shuffle zmienia tablicę
import numpy as np
from random import shuffle as sf
b = np.array([1,2,3,4,5])
print b
# [1 2 3 4 5]
sf(b)
print b
# [1 4 5 3 2]
a = np.array([[1,2,3],[4,5,6],[7,8,9]])
print a
# [[1 2 3]
# [4 5 6]
# [7 8 9]]
sf(a)
print a
# [[1 2 3]
# [4 5 6]
# [1 2 3]]
Wynik pokazuje, że podczas tasowania tablicy 1D wszystko jest poprawne. Ale podczas tasowania tablicy 2D wynik staje się dziwny.
Dlaczego trzeci wiersz oryginalnej tablicy jest odrzucany, a pierwszy wiersz jest podwójnie duplikowany?
Wiem, że mogą istnieć rozwiązania, które pozwolą rozwiązać ten problem, na przykład najpierw przetasować tablicę 1D, wskazującą identyfikatory rzędów, a następnie wyodrębnić tablicę 2D w kolejności identyfikatorów przetasowanych. Ale chcę wyjaśnić, co dzieje się z implementacją random.shuffle
lub co jest nie tak z moim kodem.
To zmarnowało dużo mojego czasu i zajęło mi 1 tydzień, aby dowiedzieć się, że random.shuffle nie działa w takich przypadkach. – Blackberry