Подтвердить что ты не робот

Простой способ создания матрицы случайных чисел

Я пытаюсь создать матрицу случайных чисел, но мое решение слишком длинное и выглядит уродливо

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

который чрезвычайно нечитабелен и не помещается на одной строке.

4b9b3361

Ответ 1

Взгляните на 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 ]])

Ответ 2

Вы можете оставить 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]])

Ответ 3

Похоже, вы выполняете на Python реализацию упражнения нейронной сети Coursera Machine Learning. Вот что я сделал для 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

Ответ 4

используйте np.random.randint(), поскольку numpy.random.random_integers() устарела

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

Ответ 5

Сначала создайте 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)

Ответ 6

Ответ, используя карту-уменьшить: -

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

Ответ 7

random_matrix = [[random.random for j in range(collumns)] for i in range(rows)
for i in range(rows):
    print random_matrix[i]

Ответ 8

x = np.int_(np.random.rand(10) * 10)

Для случайных чисел из 10. Для из 20 мы должны умножить на 20.

Ответ 9

Когда вы говорите "матрица случайных чисел", вы можете использовать numpy как упомянутое выше Павел fooobar.com/questions/170185/..., в этом случае я предполагаю, что это не имеет значения, какое распределение это (псевдо ) случайные числа придерживаются.

Однако, если вам требуется конкретный дистрибутив (я полагаю, вы заинтересованы в равномерном распределении), у numpy.random есть очень полезные для вас методы. Например, допустим, вы хотите матрицу 3x2 с псевдослучайным равномерным распределением, ограниченным [low, high]. Вы можете сделать это так:

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

Обратите внимание, что вы можете заменить uniform любым количеством дистрибутивов, поддерживаемых этой библиотекой.

Дополнительная информация: https://docs.scipy.org/doc/numpy/reference/routines.random.html.

Ответ 10

Простой способ создания массива случайных целых чисел:

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

Следующее выводит матрицу случайных целых чисел от 2 до 3 от 0 до 10:

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

Ответ 11

#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