python - पायथन के साथ एक सरणी को घुमाएं, पायथन के साथ सरणी आइटम ऑर्डर यादृच्छिक करें




arrays random (6)

पायथन के साथ सरणी को घुमाने के लिए सबसे आसान तरीका क्या है?


अन्य उत्तरों सबसे आसान हैं, हालांकि यह थोड़ा परेशान है कि random.shufflerandom.shuffle विधि वास्तव में कुछ भी वापस नहीं करती है - यह सिर्फ दी गई सूची को random.shuffle करता है। यदि आप चेन कॉल करना चाहते हैं या सिर्फ एक पंक्ति में एक शफल सरणी घोषित करने में सक्षम हैं तो आप कर सकते हैं:

    import random
    def my_shuffle(array):
        random.shuffle(array)
        return array

फिर आप इस तरह की लाइनें कर सकते हैं:

    for suit in my_shuffle(['hearts', 'spades', 'clubs', 'diamonds']):

नियमित पायथन सूचियों से निपटने पर, random.shuffle() पिछले उत्तरों के अनुसार ही काम करेगा।

लेकिन जब यह numpy.array ( numpy.array ) पर आता है, random.shuffle मूल random.shuffle तोड़ने लगता है। यहाँ एक उदाहरण है:

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

बस उपयोग करें: np.random.shuffle(a)

random.shuffle तरह, np.random.shuffle सरणी को जगह में shuffles।


बस यदि आप एक नई सरणी चाहते हैं तो आप sample उपयोग कर सकते हैं:

import random
new_array = random.sample( array, len(array) )

मुझे नहीं पता कि मैंने random.shuffle() इस्तेमाल किया है। random.shuffle() लेकिन यह मेरे लिए 'कोई नहीं' लौटाता है, इसलिए मैंने इसे लिखा, किसी के लिए सहायक हो सकता है

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

import random
random.shuffle(array)

import random
random.shuffle(array)




shuffle