it-swarm.com.de

Einfache Möglichkeit, eine Matrix aus Zufallszahlen zu erstellen

Ich versuche eine Matrix aus Zufallszahlen zu erstellen, aber meine Lösung ist zu lang und sieht hässlich aus

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

das sieht ok aus, ist aber in meiner umsetzung so

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

das ist extrem unlesbar und passt nicht in eine Zeile.

67
user2173836

Schauen Sie sich numpy.random.Rand an:

Docstring: Rand (d0, d1, ..., dn)

Zufällige Werte in einer bestimmten Form.

Erstellen Sie ein Array der angegebenen Form und verbreiten Sie es mit zufälligen Stichproben aus einer gleichmäßigen Verteilung über [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

Sie können das range(len()) ablegen:

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

Aber wirklich, Sie sollten wahrscheinlich Numpy verwenden.

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

verwenden Sie np.random.randint (), da numpy.random.random_integers () veraltet ist

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

Sieht so aus, als würden Sie eine Python Implementierung der Coursera-Übung für maschinelles Lernen im neuronalen Netzwerk durchführen. Hier ist, was ich für randInitializeWeights getan habe (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

Erstellen Sie zunächst das Array numpy und konvertieren Sie es dann in das Array matrix. Siehe den Code unten:

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

Wenn Sie "eine Matrix von Zufallszahlen" sagen, können Sie numpy als Pavel https://stackoverflow.com/a/15451997/6169225 verwenden. In diesem Fall gehe ich davon aus Dabei ist es unerheblich, auf welche Verteilung sich diese (Pseudo-) Zufallszahlen beziehen.

Wenn Sie jedoch eine bestimmte Verteilung benötigen (ich nehme an, Sie interessieren sich für die gleichmäßige Verteilung), numpy.random hat sehr nützliche Methoden für Sie. Angenommen, Sie möchten eine 3x2-Matrix mit einer pseudozufälligen gleichmäßigen Verteilung, die durch [niedrig, hoch] begrenzt ist. Das können Sie so machen:

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

Beachten Sie, dass Sie uniform durch eine beliebige Anzahl von Distributionen ersetzen können, die von dieser Bibliothek unterstützt werden.

Weitere Informationen: https://docs.scipy.org/doc/numpy/reference/routines.random.html

1
Marquistador

Eine einfache Methode zum Erstellen eines Arrays zufälliger Ganzzahlen ist:

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

Das Folgende gibt eine 2 mal 3 Matrix von Zufallszahlen von 0 bis 10 aus:

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

Für Zufallszahlen von 10 müssen wir für 20 mit 20 multiplizieren.

Eine Antwort mit Map-Reduce: -

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