Tôi đang sử dụng random.shuffle
để phát ngẫu nhiên mảng 2D numpy
. Tôi đã gặp vấn đề sau:python: tại sao random.shuffle thay đổi mảng
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]]
Kết quả cho thấy khi xáo trộn mảng 1D, mọi thứ đều chính xác. Nhưng trong khi xáo trộn mảng 2D, kết quả trở nên lạ lùng.
Tại sao hàng thứ ba của mảng ban đầu bị bỏ đi và hàng đầu tiên được nhân đôi hai lần?
Tôi biết có thể có giải pháp để giải quyết vấn đề này, chẳng hạn như trước tiên trộn một mảng 1D cho biết các id hàng và sau đó trích xuất mảng 2D theo thứ tự các id xáo trộn. Nhưng tôi muốn nêu rõ điều gì xảy ra với việc triển khai random.shuffle
hoặc mã của tôi có vấn đề gì.
Điều này đã lãng phí rất nhiều thời gian của tôi và tôi mất 1 tuần để tìm ra ngẫu nhiên.shuffle không hoạt động trong những trường hợp như vậy. – Blackberry