Простой способ создания матрицы случайных чисел
Я пытаюсь создать матрицу случайных чисел, но мое решение слишком длинное и выглядит уродливо
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)]
который чрезвычайно нечитабелен и не помещается на одной строке.
Ответы
Ответ 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