난수 행렬을 만드는 간단한 방법
나는 난수 행렬을 만들려고 노력하고 있지만, 내 솔루션은 너무 길고 보기 흉합니다.
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는 다음을 사용하여 배열을 만들 수 있습니다.
실수
정수
임의의 실수를 사용하여 배열을 만드는 경우: 두 가지 옵션이 있습니다.
- random.rand (생성된 난수의 균일한 분포를 위해)
- 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
'programing' 카테고리의 다른 글
JavaScript + MariaDB: json 개체 배열을 반환하고 응답에서 '\' 포워드 슬래시를 제거하는 SQL 쿼리 (0) | 2023.09.06 |
---|---|
OAuth2Rest Template 사용법? (0) | 2023.09.06 |
배열의 길이를 확인하려면 어떻게 해야 합니까? (0) | 2023.09.06 |
타임스탬프를 MySQL 테이블에 삽입하는 방법? (0) | 2023.09.06 |
AWS lambda API 게이트웨이 오류 "형식이 잘못된 Lambda 프록시 응답" (0) | 2023.09.06 |