339
Mới! Lưu câu hỏi hoặc câu trả lời và sắp xếp nội dung yêu thích của bạn. Tìm hiểu thêm.
Learn more.
Cách dễ nhất để xáo trộn một mảng với Python là gì?
Machavity ♦♦
30.2k26 Huy hiệu vàng87 Huy hiệu bạc98 Huy hiệu đồng26 gold badges87 silver badges98 bronze badges
hỏi ngày 23 tháng 1 năm 2009 lúc 18:34Jan 23, 2009 at 18:34
3
import random
random.shuffle[array]
Đã trả lời ngày 23 tháng 1 năm 2009 lúc 18:37Jan 23, 2009 at 18:37
David Zdavid zDavid Z
124K26 Huy hiệu vàng249 Huy hiệu bạc275 Huy hiệu Đồng26 gold badges249 silver badges275 bronze badges
9
import random
random.shuffle[array]
Đã trả lời ngày 23 tháng 1 năm 2009 lúc 18:38Jan 23, 2009 at 18:38
Douglas Leederdouglas LeederDouglas Leeder
51.2K9 Huy hiệu vàng91 Huy hiệu bạc136 Huy hiệu đồng9 gold badges91 silver badges136 bronze badges
3
Cách khác để làm điều này bằng cách sử dụng sklearn
from sklearn.utils import shuffle
X=[1,2,3]
y = ['one', 'two', 'three']
X, y = shuffle[X, y, random_state=0]
print[X]
print[y]
Output:
[2, 1, 3]
['two', 'one', 'three']
Ưu điểm: Bạn có thể ngẫu nhiên nhiều mảng đồng thời mà không làm gián đoạn ánh xạ. Và 'Random_state' có thể kiểm soát sự xáo trộn cho hành vi có thể tái tạo.
Đã trả lời ngày 24 tháng 7 năm 2017 lúc 3:30Jul 24, 2017 at 3:30
Qy Zuoqy ZuoQy Zuo
2.43422 Huy hiệu bạc21 Huy hiệu đồng22 silver badges21 bronze badges
4
Các câu trả lời khác là dễ nhất, tuy nhiên, một chút khó chịu khi phương pháp
import random
random.shuffle[array]
2 không thực sự trả về bất cứ điều gì - nó chỉ sắp xếp danh sách đã cho. Nếu bạn muốn chuỗi cuộc gọi hoặc chỉ có thể khai báo một mảng xáo trộn trong một dòng bạn có thể làm: import random
def my_shuffle[array]:
random.shuffle[array]
return array
Sau đó, bạn có thể làm các dòng như:
for suit in my_shuffle[['hearts', 'spades', 'clubs', 'diamonds']]:
Đã trả lời ngày 20 tháng 12 năm 2011 lúc 22:05Dec 20, 2011 at 22:05
Mark Rhodesmark RhodesMark Rhodes
9.8034 Huy hiệu vàng46 Huy hiệu bạc51 Huy hiệu Đồng4 gold badges46 silver badges51 bronze badges
5
Chỉ trong trường hợp bạn muốn một mảng mới, bạn có thể sử dụng
import random
random.shuffle[array]
3:import random
new_array = random.sample[ array, len[array] ]
Đã trả lời ngày 29 tháng 3 năm 2017 lúc 18:37Mar 29, 2017 at 18:37
Charlie Parkercharlie ParkerCharlie Parker
9,89944 Huy hiệu vàng164 Huy hiệu bạc274 Huy hiệu Đồng44 gold badges164 silver badges274 bronze badges
Khi xử lý danh sách Python thông thường,
import random
random.shuffle[array]
4 sẽ thực hiện công việc giống như câu trả lời trước đó cho thấy.Nhưng khi nói đến ____ 15 [____ 16],
import random
random.shuffle[array]
2 dường như phá vỡ bản gốc import random
random.shuffle[array]
5. Đây là một ví dụ:import random
import numpy as np
import numpy.random
a = np.array[[1,2,3,4,5,6]]
a.shape = [3,2]
print a
random.shuffle[a] # a will definitely be destroyed
print a
Chỉ sử dụng:
import random
random.shuffle[array]
9Giống như
import random
random.shuffle[array]
2, from sklearn.utils import shuffle
X=[1,2,3]
y = ['one', 'two', 'three']
X, y = shuffle[X, y, random_state=0]
print[X]
print[y]
1 xáo trộn mảng tại chỗ.
A B C D
9.74815 Huy hiệu vàng49 Huy hiệu bạc81 Huy hiệu đồng15 gold badges49 silver badges81 bronze badges
Đã trả lời ngày 28 tháng 10 năm 2013 lúc 9:23Oct 28, 2013 at 9:23
Shuai Zhangshuai ZhangShuai Zhang
1.9613 huy hiệu vàng21 Huy hiệu bạc23 Huy hiệu đồng3 gold badges21 silver badges23 bronze badges
2
Bạn có thể sắp xếp mảng của mình bằng khóa ngẫu nhiên
sorted[array, key = lambda x: random.random[]]
Chìa khóa chỉ được đọc một lần để so sánh mục trong khi sắp xếp vẫn hiệu quả.
Nhưng trông giống như
from sklearn.utils import shuffle
X=[1,2,3]
y = ['one', 'two', 'three']
X, y = shuffle[X, y, random_state=0]
print[X]
print[y]
2 sẽ nhanh hơn vì nó được viết bằng Cđây là o [log [n]] btw
Đã trả lời ngày 21 tháng 9 năm 2018 lúc 18:37Sep 21, 2018 at 18:37
JamesjamesJames
Huy hiệu vàng 13K557 Huy hiệu bạc81 Huy hiệu đồng5 gold badges57 silver badges81 bronze badges
4
Ngoài các câu trả lời trước đó, tôi muốn giới thiệu một chức năng khác.
from sklearn.utils import shuffle
X=[1,2,3]
y = ['one', 'two', 'three']
X, y = shuffle[X, y, random_state=0]
print[X]
print[y]
3 cũng như import random
random.shuffle[array]
2 thực hiện xáo trộn tại chỗ. Tuy nhiên, nếu bạn muốn trả về một mảng xáo trộn from sklearn.utils import shuffle
X=[1,2,3]
y = ['one', 'two', 'three']
X, y = shuffle[X, y, random_state=0]
print[X]
print[y]
5 là chức năng sử dụng.Đã trả lời ngày 18 tháng 11 năm 2016 lúc 9:55Nov 18, 2016 at 9:55
SabersaberSaber
1942 Huy hiệu bạc8 Huy hiệu đồng2 silver badges8 bronze badges
Tôi không biết tôi đã sử dụng
import random
random.shuffle[array]
4 nhưng nó trả về 'không' cho tôi, vì vậy tôi đã viết điều này, có thể hữu ích cho ai đódef shuffle[arr]:
for n in range[len[arr] - 1]:
rnd = random.randint[0, [len[arr] - 1]]
val1 = arr[rnd]
val2 = arr[rnd - 1]
arr[rnd - 1] = val1
arr[rnd] = val2
return arr
Đã trả lời ngày 17 tháng 1 năm 2017 lúc 11:09Jan 17, 2017 at 11:09
JeevajeevaJeeva
1.7372 huy hiệu vàng14 Huy hiệu bạc19 Huy hiệu đồng2 gold badges14 silver badges19 bronze badges
1
import random
random.shuffle[array]
0
MBT
Huy hiệu vàng 19.2K1818 gold badges77 silver badges100 bronze badges
Đã trả lời ngày 14 tháng 11 năm 2018 lúc 15:41Nov 14, 2018 at 15:41
Xin lưu ý rằng
import random
random.shuffle[array]
4 không nên được sử dụng trên các mảng đa chiều vì nó gây ra sự lặp lại.Hãy tưởng tượng bạn muốn xáo trộn một mảng dọc theo chiều đầu tiên của nó, chúng ta có thể tạo ví dụ thử nghiệm sau,
import random
random.shuffle[array]
1Vì vậy, dọc theo trục đầu tiên, phần tử thứ i tương ứng với ma trận 2x3 trong đó tất cả các phần tử bằng i.
Nếu chúng ta sử dụng hàm xáo trộn chính xác cho các mảng đa chiều, tức là
from sklearn.utils import shuffle
X=[1,2,3]
y = ['one', 'two', 'three']
X, y = shuffle[X, y, random_state=0]
print[X]
print[y]
8, mảng sẽ được xáo trộn dọc theo trục đầu tiên như mong muốn. Tuy nhiên, sử dụng from sklearn.utils import shuffle
X=[1,2,3]
y = ['one', 'two', 'three']
X, y = shuffle[X, y, random_state=0]
print[X]
print[y]
9 sẽ gây ra sự lặp lại. Bạn có thể kiểm tra điều này bằng cách chạy [2, 1, 3]
['two', 'one', 'three']
0 sau khi xáo trộn cung cấp cho bạn 10 [như mong đợi] với [2, 1, 3]
['two', 'one', 'three']
1 nhưng chỉ khoảng 5 khi sử dụng import random
random.shuffle[array]
4.Đã trả lời ngày 21 tháng 2 năm 2020 lúc 14:01Feb 21, 2020 at 14:01
Wise Cloudwise CloudWise Cloud
4014 Huy hiệu bạc5 Huy hiệu Đồng4 silver badges5 bronze badges