Próbuję utworzyć macierz liczb losowych, ale moje rozwiązanie jest za długie i wygląda brzydko
random_matrix = [[random.random() for e in range(2)] for e in range(3)]
wygląda to dobrze, ale w mojej realizacji tak jest
weights_h = [[random.random() for e in range(len(inputs[0]))] for e in range(hiden_neurons)]
który jest wyjątkowo nieczytelny i nie mieści się w jednej linii.
python
random
coding-style
user2173836
źródło
źródło
numpy.random.random_integers(low, high, shape)
, np.numpy.random.random_integers(0, 100, (3, 3))
numpy.random.random
podobnie jak wiele innychnumpy.random
metod, akceptuje kształty, tj. N-krotki. Tak więc w rzeczywistości zewnętrzne paranthezy reprezentują wywołanie metodynumpy.random.random()
, a wewnętrzne parantezy są cukrem syntaktycznym do tworzenia instancji krotki(3, 3)
przekazywanej do funkcji.numpy.random.random_integers()
jest przestarzałe. Użyjnumpy.random.randint()
zamiast tego. docs.scipy.org/doc/numpy/reference/generated/ ...użyj
np.random.randint()
jakonumpy.random.random_integers()
przestarzałeźródło
Wygląda na to, że wykonujesz w języku Python ćwiczenie Coursera Machine Learning Neural Network. Oto, co zrobiłem dla randInitializeWeights (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
źródło
Najpierw utwórz
numpy
tablicę, a następnie przekonwertuj ją namatrix
. Zobacz poniższy kod: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)
źródło
x = np.int_(np.random.rand(10) * 10)
Dla liczb losowych z 10. Dla liczby z 20 musimy pomnożyć przez 20.
źródło
Kiedy mówisz „macierz liczb losowych”, możesz użyć numpy jako wspomnianego wyżej Pawła https://stackoverflow.com/a/15451997/6169225 , w tym przypadku zakładam, że nie ma dla Ciebie znaczenia, jaka dystrybucja tych (pseudo ) losowe liczby.
Jeśli jednak potrzebujesz określonej dystrybucji (wyobrażam sobie, że interesuje Cię rozkład jednolity),
numpy.random
ma dla Ciebie bardzo przydatne metody. Na przykład, powiedzmy, że potrzebujesz macierzy 3x2 z pseudolosowym rozkładem jednorodnym ograniczonym przez [niski, wysoki]. Możesz to zrobić w następujący sposób:numpy.random.uniform(low,high,(3,2))
Uwaga, możesz zastąpić
uniform
dowolną liczbą dystrybucji obsługiwanych przez tę bibliotekę.Więcej informacji: https://docs.scipy.org/doc/numpy/reference/routines.random.html
źródło
Prosty sposób na utworzenie tablicy losowych liczb całkowitych to:
Poniższe polecenie daje macierz 2 na 3 losowych liczb całkowitych od 0 do 10:
a = np.random.randint(10, size=(2,3))
źródło
Aby utworzyć tablicę liczb losowych, NumPy zapewnia tworzenie tablic przy użyciu:
Liczby rzeczywiste
Liczby całkowite
Do tworzenia tablicy przy użyciu losowych liczb rzeczywistych: są 2 opcje
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)
Aby utworzyć tablicę przy użyciu losowych liczb całkowitych:
import numpy as np numpy.random.randint(low, high=None, size=None, dtype='l')
gdzie
na przykład:
Podany przykład wygeneruje tablicę losowych liczb całkowitych od 0 do 4, jej rozmiar wyniesie 5 * 5 i będzie miał 25 liczb całkowitych
arr2 = np.random.randint(0,5,size = (5,5))
aby stworzyć macierz 5 na 5, należy ją zmodyfikować na
arr2 = np.random.randint (0,5, size = (5,5)), zmień symbol mnożenia * na przecinek, #
np. 2:
Podany przykład wygeneruje tablicę losowych liczb całkowitych od 0 do 1, jej rozmiar wyniesie 1 * 10 i będzie miał 10 liczb całkowitych
arr3= np.random.randint(2, size = 10)
źródło
random_matrix = [[random.random for j in range(collumns)] for i in range(rows) for i in range(rows): print random_matrix[i]
źródło
Odpowiedź za pomocą map-redukuj: -
map(lambda x: map(lambda y: ran(),range(len(inputs[0]))),range(hiden_neurons))
źródło
#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
źródło
numpy.random.rand (rzad, kolumna) generuje liczby losowe od 0 do 1, zgodnie z podanymi parametrami (m, n). Więc użyj go do stworzenia macierzy (m, n) i pomnóż macierz dla granicy zakresu i zsumuj ją z górną granicą.
Analiza: Jeśli zostanie wygenerowane zero, tylko dolny limit zostanie utrzymany, ale jeśli zostanie wygenerowany, tylko górny limit zostanie utrzymany. W kolejności słów, generując limity za pomocą rand numpy, możesz wygenerować skrajne pożądane liczby.
import numpy as np high = 10 low = 5 m,n = 2,2 a = (high - low)*np.random.rand(m,n) + low
Wynik:
a = array([[5.91580065, 8.1117106 ], [6.30986984, 5.720437 ]])
źródło