অজগর দিয়ে কোন অ্যারে বদলানোর সহজতম উপায় কী?
new_array = random.sample( array, len(array) )।
অজগর দিয়ে কোন অ্যারে বদলানোর সহজতম উপায় কী?
new_array = random.sample( array, len(array) )।
উত্তর:
import random
random.shuffle(array)
import random
random.shuffle(array)
স্কেলার্ন ব্যবহার করে এটি করার বিকল্প উপায়
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, 1, 3]
['two', 'one', 'three']
সুবিধা: আপনি ম্যাপিং ব্যাহত না করে একসাথে একাধিক অ্যারে এলোমেলো করতে পারেন। এবং 'এলোমেলো_স্টেট' প্রজননযোগ্য আচরণের জন্য এলোমেলো নিয়ন্ত্রণ করতে পারে।
অন্যান্য উত্তরগুলি সবচেয়ে সহজ, তবে এটি কিছুটা বিরক্তিকর যে random.shuffleপদ্ধতিটি আসলে কোনও কিছুই ফেরায় না - এটি কেবলমাত্র প্রদত্ত তালিকাকে সাজিয়ে তোলে। আপনি যদি কল চেইন করতে চান বা কেবল একটি লাইনে একটি শিফल्ड অ্যারে ঘোষণা করতে সক্ষম হন তবে আপনি এটি করতে পারেন:
import random
def my_shuffle(array):
random.shuffle(array)
return array
তারপরে আপনি লাইনগুলি এর মতো করতে পারেন:
for suit in my_shuffle(['hearts', 'spades', 'clubs', 'diamonds']):
নিয়মিত পাইথন তালিকাগুলি random.shuffle()নিয়ে কাজ করার সময় পূর্ববর্তী উত্তরগুলি দেখায় ঠিক তেমন কাজ করবে।
তবে যখন এটি ndarray( numpy.array) এ আসে তখন random.shuffleমনে হয় আসলটি ভেঙে যায় ndarray। এখানে একটি উদাহরণ:
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জায়গায় অ্যারে পরিবর্তন করুন।
আপনি যদি নতুন অ্যারে চান তবে আপনি এটি ব্যবহার করতে পারেন sample:
import random
new_array = random.sample( array, len(array) )
আপনি এ্যান্ডম কি দিয়ে আপনার অ্যারে বাছাই করতে পারেন
sorted(array, key = lambda x: random.random())
কী কেবল একবার পড়তে হবে তাই সাজানোর সময় আইটেমের তুলনায় দক্ষ এখনও।
কিন্তু মত চেহারা random.shuffle(array)দ্রুততর হবে যেহেতু এটি সি লিখিত
arrayআমি বোঝানো Randomঅর্থাৎ: উপাদান নতুন উৎপাদিত হতে পারে শ্রেণী উদাহরণস্বরূপ প্রতিটি সময়। আমি আসলে নিশ্চিত নই: এটির জন্য এটি ভুল উপায় হবে: আপনার একটি তৈরি করা উচিত এবং তারপরে এটি প্রার্থনা করা উচিত । তবে অজগর কীভাবে কাজ করে তা নিশ্চিত নয়lambdarandom.random()RandomjavaRandom rng = Random()rng.nextGaussian()random.random()
আমি জানি না আমি ব্যবহার করেছি 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
সচেতন থাকুন যে random.shuffle()বহুমাত্রিক অ্যারে ব্যবহার করা উচিত নয় কারণ এটি পুনরাবৃত্তি ঘটায়।
কল্পনা করুন যে আপনি কোনও অ্যারের প্রথম মাত্রা বরাবর পরিবর্তন করতে চান, আমরা নিম্নলিখিত পরীক্ষার উদাহরণ তৈরি করতে পারি,
import numpy as np
x = np.zeros((10, 2, 3))
for i in range(10):
x[i, ...] = i*np.ones((2,3))
যাতে প্রথম অক্ষ বরাবর, i-th উপাদানটি 2x3 ম্যাট্রিক্সের সাথে মিলিত হয় যেখানে সমস্ত উপাদান i এর সমান।
আমরা যদি বহুমাত্রিক অ্যারেগুলির জন্য সঠিক শফল ফাংশনটি ব্যবহার করি np.random.shuffle(x), তবে অ্যারেটি প্রথম অক্ষের সাথে পছন্দসইভাবে বদলে যাবে। তবে, ব্যবহারের random.shuffle(x)ফলে পুনরাবৃত্তি ঘটবে। আপনি len(np.unique(x))এলোমেলো করে চালিয়ে যাচাই করে দেখতে পারেন যা ব্যবহারের সময় আপনাকে কেবল 10 (প্রত্যাশামতো) দেয় np.random.shuffle()তবে কেবল 5 টির সাথে random.shuffle()।