এলোমেলো সংখ্যার ম্যাট্রিক্স তৈরি করার সহজ উপায়


98

আমি এলোমেলো সংখ্যার একটি ম্যাট্রিক্স তৈরি করার চেষ্টা করছি, তবে আমার সমাধানটি অনেক দীর্ঘ এবং কুরুচিপূর্ণ দেখাচ্ছে

random_matrix = [[random.random() for e in range(2)] for e in range(3)]

এটি দেখতে ঠিক আছে, তবে আমার বাস্তবায়নে এটি রয়েছে

weights_h = [[random.random() for e in range(len(inputs[0]))] for e in range(hiden_neurons)]

যা অত্যন্ত অপঠনযোগ্য এবং এক লাইনে ফিট করে না।

উত্তর:


76

Numpy.random.rand একবার দেখুন :

দস্তাবেজ: র‌্যান্ড (ডি 0, ডি 1, ..., ডিএন)

প্রদত্ত আকারে র্যান্ডম মান।

প্রদত্ত আকারের একটি অ্যারে তৈরি করুন এবং এটিকে একটি অভিন্ন বিতরণ থেকে এলোমেলো নমুনা দিয়ে প্রচার করুন [0, 1)


>>> import numpy as np
>>> np.random.rand(2,3)
array([[ 0.22568268,  0.0053246 ,  0.41282024],
       [ 0.68824936,  0.68086462,  0.6854153 ]])

95

আপনি ড্রপ করতে পারেন range(len()):

weights_h = [[random.random() for e in inputs[0]] for e in range(hiden_neurons)]

তবে সত্যই, আপনার সম্ভবত অলপ ব্যবহার করা উচিত।

In [9]: numpy.random.random((3, 3))
Out[9]:
array([[ 0.37052381,  0.03463207,  0.10669077],
       [ 0.05862909,  0.8515325 ,  0.79809676],
       [ 0.43203632,  0.54633635,  0.09076408]])

কিভাবে এলোমেলো ints পেতে?
জ্যাক টোয়াইন

41
numpy.random.random_integers(low, high, shape)যেমন,numpy.random.random_integers(0, 100, (3, 3))
পাভেল আনোসোভ

এলোমেলো স্বাক্ষরে ডাবল ব্র্যাকেট স্বরলিপি ব্যবহার করার শব্দটি কী? আমি এর সাথে পরিচিত নই।
এমিল ভিক্টর

@ এমিলিভিক্টর numpy.random.randomঅন্যান্য numpy.randomপদ্ধতির মতো অনেকগুলি আকার গ্রহণ করে, অর্থাৎ এন-টিপলসকে। সুতরাং প্রকৃতপক্ষে বাইরের প্যারান্থিসগুলি পদ্ধতিটি কল করার প্রতিনিধিত্ব করে numpy.random.random()এবং অভ্যন্তরীণ প্যারান্থিসগুলি (3, 3)ফাংশনে প্রবেশ করা টিপলটি তাত্ক্ষণিকভাবে সংশ্লেষিত করার জন্য সিনট্যাকটিক চিনি ।
বিবেক ঝা

4
numpy.random.random_integers()অবচয় করা হয়। numpy.random.randint()পরিবর্তে ব্যবহার করুন। docs.scipy.org/doc/numpy/references/generated/…
সর্বোচ্চ

15

অবচয় np.random.randint()হিসাবে ব্যবহার করুনnumpy.random.random_integers()

random_matrix = numpy.random.randint(min_val,max_val,(<num_rows>,<num_cols>))

5

দেখে মনে হচ্ছে আপনি কোর্সেরা মেশিন লার্নিং নিউরাল নেটওয়ার্ক অনুশীলনের একটি পাইথন বাস্তবায়ন করছেন। আমি র‌্যান্ডালিটালাইজওয়েটস (এল_ইন, এল_আউট) এর জন্য যা করেছি তা এখানে

#get a random array of floats between 0 and 1 as Pavel mentioned 
W = numpy.random.random((L_out, L_in +1))

#normalize so that it spans a range of twice epsilon
W = W * 2 * epsilon

#shift so that mean is at zero
W = W - epsilon

3

প্রথমে numpyঅ্যারে তৈরি করুন তারপর এটিকে রূপান্তর করুন matrix। নীচের কোডটি দেখুন:

import numpy

B = numpy.random.random((3, 4)) #its ndArray
C = numpy.matrix(B)# it is matrix
print(type(B))
print(type(C)) 
print(C)


2

আপনি যখন "এলোমেলো সংখ্যার একটি ম্যাট্রিক্স" বলছেন, আপনি উপরে উল্লিখিত পাভেল https://stackoverflow.com/a/15451997/6169225 হিসাবে নকল ব্যবহার করতে পারেন , এই ক্ষেত্রে আমি আপনাকে ধরে নিচ্ছি যে এগুলি বিতরণ (অপ্রয়োজনীয়) ) এলোমেলো সংখ্যা মেনে চলেন।

তবে, যদি আপনার কোনও নির্দিষ্ট বিতরণ প্রয়োজন হয় (আমি ধারণা করি আপনি ইউনিফর্ম বিতরণে আগ্রহী), numpy.randomআপনার জন্য খুব দরকারী পদ্ধতি রয়েছে। উদাহরণস্বরূপ, ধরা যাক যে আপনি [নিম্ন, উচ্চ] দ্বারা আবদ্ধ সিউডো এলোমেলো ইউনিফর্ম বিতরণ সহ একটি 3x2 ম্যাট্রিক্স চান। আপনি এটি এর মতো করতে পারেন:

numpy.random.uniform(low,high,(3,2))

দ্রষ্টব্য, আপনি uniformএই লাইব্রেরি দ্বারা সমর্থিত প্রচুর বিতরণ দ্বারা প্রতিস্থাপন করতে পারেন ।

আরও পড়া: https://docs.scipy.org/doc/numpy/references/routines.random.html


2

এলোমেলো পূর্ণসংখ্যার অ্যারে তৈরির একটি সহজ উপায় হ'ল:

matrix = np.random.randint(maxVal, size=(rows, columns))

নিম্নলিখিতটি 0 থেকে 10 পর্যন্ত র্যান্ডম পূর্ণসংখ্যার 2 বাই 3 ম্যাট্রিক্সের ফলাফল দেয়:

a = np.random.randint(10, size=(2,3))

2

এলোমেলো সংখ্যার একটি অ্যারে তৈরির জন্য NumPy ব্যবহার করে অ্যারে তৈরি করে:

  1. বাস্তব সংখ্যার

  2. পূর্ণসংখ্যা

এলোমেলোভাবে রিয়েল সংখ্যা ব্যবহার করে অ্যারে তৈরি করার জন্য : 2 টি বিকল্প রয়েছে

  1. random.rand (উত্পন্ন এলোমেলো সংখ্যার অভিন্ন বিতরণের জন্য)
  2. random.randn (উত্পন্ন এলোমেলো সংখ্যাগুলির সাধারণ বিতরণের জন্য)

random.rand

import numpy as np 
arr = np.random.rand(row_size, column_size) 

random.randn

import numpy as np 
arr = np.random.randn(row_size, column_size) 

এলোমেলো পূর্ণসংখ্যার ব্যবহার করে অ্যারে তৈরির জন্য :

import numpy as np
numpy.random.randint(low, high=None, size=None, dtype='l')

কোথায়

  • নিম্ন = বিতরণ থেকে অঙ্কিত সর্বনিম্ন (স্বাক্ষরিত) পূর্ণসংখ্যা ger
  • উচ্চ (alচ্ছিক) = সরবরাহ করা থাকলে, বিতরণ থেকে আঁকানোর বৃহত্তম (স্বাক্ষরিত) পূর্ণসংখ্যার উপরে
  • আকার (alচ্ছিক) = আউটপুট আকৃতি অর্থাত প্রদত্ত আকারটি যদি উদাহরণস্বরূপ ((মি, এন, কে) হয় তবে মি * এন * কে নমুনা আঁকুন
  • dtype (alচ্ছিক) = ফলাফলের পছন্দসই টাইপ।

যেমন:

প্রদত্ত উদাহরণটি 0 এবং 4 এর মধ্যে এলোমেলো পূর্ণসংখ্যার অ্যারে উত্পাদন করবে, এর আকার 5 * 5 এবং 25 টি পূর্ণসংখ্যা হবে

arr2 = np.random.randint(0,5,size = (5,5))

5 বাই 5 ম্যাট্রিক্স তৈরি করতে, এটিতে পরিবর্তন করা উচিত

arr2 = np.random.randint (0,5, আকার = (5,5)), গুণের চিহ্নকে * কমাতে পরিবর্তন করুন, #

[[2 1 1 0 1] [3 2 1 4 3] [2 3 0 3 3] [1 3 1 0 0] [4 1 2 0 1]]

উদাহরণস্বরূপ:

প্রদত্ত উদাহরণটি 0 এবং 1 এর মধ্যে এলোমেলো পূর্ণসংখ্যার অ্যারে উত্পাদন করবে, এর আকার 1 * 10 হবে এবং 10 টি পূর্ণসংখ্যা থাকবে

arr3= np.random.randint(2, size = 10)

[0 0 0 0 1 1 0 0 1 1]



1

মানচিত্র-হ্রাস ব্যবহার করে একটি উত্তর: -

map(lambda x: map(lambda y: ran(),range(len(inputs[0]))),range(hiden_neurons))

0
#this is a function for a square matrix so on the while loop rows does not have to be less than cols.
#you can make your own condition. But if you want your a square matrix, use this code.

import random

import numpy as np

def random_matrix(R, cols):

        matrix = []

        rows =  0

        while  rows < cols:

            N = random.sample(R, cols)

            matrix.append(N)

            rows = rows + 1

    return np.array(matrix)

print(random_matrix(range(10), 5))
#make sure you understand the function random.sample

0

numpy.random.rand (সারি, কলাম) প্রদত্ত নির্দিষ্ট (মি, এন) পরামিতি অনুযায়ী 0 এবং 1 এর মধ্যে এলোমেলো সংখ্যা তৈরি করে। সুতরাং এটি একটি (এম, এন) ম্যাট্রিক্স তৈরি করতে ব্যবহার করুন এবং ব্যাপ্তির সীমাটির জন্য ম্যাট্রিক্সকে গুণিত করুন এবং উচ্চ সীমাতে এটি যোগ করুন।

বিশ্লেষণ: শূন্য উত্পন্ন হলে কেবলমাত্র নিম্ন সীমাটি অনুষ্ঠিত হবে, তবে যদি একটি উত্পন্ন হয় তবে উচ্চ সীমাটি অনুষ্ঠিত হবে। ক্রম কথায়, র‌্যান্ড নিম্পি ব্যবহার করে সীমা তৈরি করা আপনি চরম পছন্দসই সংখ্যা তৈরি করতে পারেন।

import numpy as np

high = 10
low = 5
m,n = 2,2

a = (high - low)*np.random.rand(m,n) + low

আউটপুট:

a = array([[5.91580065, 8.1117106 ],
          [6.30986984, 5.720437  ]])
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.