web-dev-qa-db-fra.com

Un moyen simple de créer une matrice de nombres aléatoires

J'essaie de créer une matrice de nombres aléatoires, mais ma solution est trop longue et a l'air laide.

random_matrix = [[random.random() for e in range(2)] for e in range(3)]

cela semble correct, mais dans ma mise en œuvre, il est

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

ce qui est extrêmement illisible et ne tient pas sur une ligne.

67
user2173836

Jetez un oeil à numpy.random.Rand :

Chaîne de documentation: Rand (d0, d1, ..., dn)

Valeurs aléatoires dans une forme donnée.

Crée un tableau de la forme donnée et le propage avec des échantillons aléatoires d'une distribution uniforme sur [0, 1).


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

Vous pouvez déposer le range(len()):

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

Mais en réalité, vous devriez probablement utiliser 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]])
88
Pavel Anossov

use np.random.randint () comme numpy.random.random_integers () est obsolète

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

On dirait que vous effectuez une Python implémentation de l'exercice Réseau de neurones Learning Learning de Coursera. Voici ce que j'ai fait pour 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
3
Cartesian Theater

Commencez par créer le tableau numpy, puis convertissez-le en matrix. Voir le code ci-dessous:

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)
3
Lokesh Sharma

Lorsque vous dites "une matrice de nombres aléatoires", vous pouvez utiliser numpy comme Pavel https://stackoverflow.com/a/15451997/6169225 mentionné ci-dessus , dans ce cas, je suppose que la distribution de ces nombres (pseudo) aléatoires est sans importance.

Toutefois, si vous souhaitez une distribution particulière (j'imagine que la distribution uniforme vous intéresse), numpy.random a des méthodes très utiles pour vous. Par exemple, supposons que vous souhaitiez une matrice 3x2 avec une distribution uniforme pseudo-aléatoire limitée par [bas, haut]. Vous pouvez faire ça comme ça:

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

Notez que vous pouvez remplacer uniform par un nombre quelconque de distributions prises en charge par cette bibliothèque.

Pour en savoir plus: https://docs.scipy.org/doc/numpy/reference/routines.random.html

1
Marquistador

Un moyen simple de créer un tableau d'entiers aléatoires est:

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

Ce qui suit génère une matrice 2 sur 3 d’entiers aléatoires de 0 à 10:

a = np.random.randint(10, size=(2,3))
1
Runner
x = np.int_(np.random.Rand(10) * 10)

Pour des nombres aléatoires sur 10. Pour 20, nous devons multiplier par 20.

1

Une réponse en utilisant map-réduire: -

map(lambda x: map(lambda y: ran(),range(len(inputs[0]))),range(hiden_neurons))
1
GodMan
random_matrix = [[random.random for j in range(collumns)] for i in range(rows)
for i in range(rows):
    print random_matrix[i]
1
PythonUser
#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
0
Lindokuhle Ngwenya