programing

난수 행렬을 만드는 간단한 방법

megabox 2023. 9. 6. 21:59
반응형

난수 행렬을 만드는 간단한 방법

나는 난수 행렬을 만들려고 노력하고 있지만, 내 솔루션은 너무 길고 보기 흉합니다.

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)]

읽을 수 없을 정도로 한 줄에 맞지 않는 것입니다.

드랍하시면 됩니다.range(len()):

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

하지만 정말로, 여러분은 아마 Numpy를 사용해야 할 것입니다.

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]])

numpy.random.rand를 보십시오.

문서 문자열: rand(d0, d1, ..., dn)

지정된 모양의 임의 값입니다.

주어진 모양의 배열을 만들고 다음과 같은 균일 분포에서 랜덤 표본과 함께 전파합니다.[0, 1).


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

사용하다np.random.randint()~하듯이np.random.random_integers()사용하지 않습니다.

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

Coursera Machine Learning Neural Network 연습의 Python 구현을 하고 있는 것 같습니다.제가 랜드 초기화를 위해 한 일입니다.가중치(L_in,L_out)

#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

난수 배열을 만드는 경우 NumPy는 다음을 사용하여 배열을 만들 수 있습니다.

  1. 실수

  2. 정수

임의의 실수를 사용하여 배열을 만드는 경우: 두 가지 옵션이 있습니다.

  1. random.rand (생성된 난수의 균일한 분포를 위해)
  2. random.randn(생성된 난수의 정규 분포의 경우)

무작위의

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

랜덤.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')

어디에

  • low = 분포에서 추출할 가장 낮은(부호가 있는) 정수
  • 높음(선택 사항)= 제공된 경우 분포에서 추출할 가장 큰(부호가 있는) 정수 이상의 정수
  • size (option) = 출력 형상 즉, 주어진 형상이 예를 들어 (m, n, k)이면 m * n * k 샘플을 그립니다.
  • dtype(옵션) = 원하는 결과의 dtype입니다.

예:

주어진 예제는 0과 4사이의 임의의 정수 배열을 생성하고, 그 크기는 5*5이고 25개의 정수를 갖습니다.

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

5 x 5 행렬을 만들려면 다음과 같이 수정해야 합니다.

arr2 = np.laps.randint(0,5,size = (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]]

eg2:

주어진 예제는 0과 1사이의 임의의 정수 배열을 생성하고, 그 크기는 1*10이고 10개의 정수를 가질 것입니다.

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

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

첫번째로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)
x = np.int_(np.random.rand(10) * 10)

10점 만점에 난수일 경우.우리는 20에 20을 곱해야 합니다.

당신이 "난수 행렬"이라고 말할 때, 당신은 위에서 언급한 Pavel https://stackoverflow.com/a/15451997/6169225 과 같이 numpy를 사용할 수 있습니다. 이 경우 나는 당신에게 이들 난수들이 어떤 분포를 고수하는지와 무관하다고 가정합니다.

경우(이 있을 것으로 됩니다), 한 가 으로 됩니다 이 에 됩니다 으로 이 에 ,numpy.random당신에게 매우 유용한 방법을 가지고 있습니다.예를 들어, [낮음, 높음]으로 경계를 이루는 의사 난수 균일 분포를 갖는 3x2 행렬을 원한다고 가정합니다.이렇게 할 수 있습니다.

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

, 할 를 대체할 수 .uniform이 라이브러리에서 지원하는 배포 횟수에 따라 변경할 수 있습니다.

자세한 내용: https://docs.scipy.org/doc/numpy/reference/routines.random.html

랜덤 정수 배열을 만드는 간단한 방법은 다음과 같습니다.

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

다음은 0부터 10까지의 임의 정수의 2 x 3 행렬을 출력합니다.

a = np.random.randint(10, size=(2,3))
random_matrix = [[random.random for j in range(collumns)] for i in range(rows)
for i in range(rows):
    print random_matrix[i]

맵 축소를 사용한 답:-

map(lambda x: map(lambda y: ran(),range(len(inputs[0]))),range(hiden_neurons))
#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

numpy.rand(행, 열)는 지정된 (m,n) 매개 변수에 따라 0과 1 사이의 난수를 생성합니다.따라서 이를 사용하여 (m,n) 행렬을 만들고 범위 한계에 대한 행렬을 곱하여 상한과 합합니다.

분석: 0이 생성되면 하한값만 유지되지만, 1이 생성되면 상한값만 유지됩니다.단어 순서대로, rand numpy를 사용하여 극한값을 생성하면 원하는 극단값을 생성할 수 있습니다.

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  ]])

언급URL : https://stackoverflow.com/questions/15451958/simple-way-to-create-matrix-of-random-numbers

반응형