120 votes

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 peu esthétique.

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

cela semble correct, mais dans mon implémentation, c'est

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

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

1voto

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

0voto

#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

0voto

Numpy.random.rand(row, column) génère des nombres aléatoires entre 0 et 1, selon les paramètres (m,n) donnés. Utilisez-le donc pour créer une matrice (m,n) et multiplier la matrice pour la limite de l'intervalle et la somme avec la limite haute.

Analyse : Si un zéro est généré, seule la limite basse sera maintenue, mais si un un est généré, seule la limite haute sera maintenue. En d'autres termes, en générant les limites à l'aide de rand numpy, vous pouvez générer les nombres extrêmes souhaités.

import numpy as np

high = 10
low = 5
m,n = 2,2

a = (high - low)*np.random.rand(m,n) + low

Sortie :

a = array([[5.91580065, 8.1117106 ],
          [6.30986984, 5.720437  ]])

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X