2013-11-14 28 views
6

Sono nuovo in python/numpy e ho bisogno di creare un array contenente matrici di numeri casuali.Matrice numpy di matrici casuali

Quello che ho finora è questo:

for i in xrange(samples): 
    SPN[] = np.random.random((6,5)) * np.random.randint(0,100) 

Quale senso per me come sviluppatore PHP, ma non funziona per Python. Quindi, come posso creare una matrice tridimensionale per contenere queste matrici/matrici?

+0

In che modo questo loop, anche in PHP, crea un array tridimensionale? Cos'è il 'SPN'? Una lista vuota? Se è così, prova 'SPN.append (np.random ....)' –

+0

SPN [] senza l'indice su php. Non ho definito SPN ma dovrebbe essere un array –

risposta

16

Sia np.random.randint e np.random.uniform, come la maggior parte delle funzioni np.random, accettare un parametro size, così nel numpy avremmo fatto in un solo passaggio:

>>> SPN = np.random.randint(0, 100, (3, 6, 5)) 
>>> SPN 
array([[[45, 95, 56, 78, 90], 
     [87, 68, 24, 62, 12], 
     [11, 26, 75, 57, 12], 
     [95, 87, 47, 69, 90], 
     [58, 24, 49, 62, 85], 
     [38, 5, 57, 63, 16]], 

     [[61, 67, 73, 23, 34], 
     [41, 3, 69, 79, 48], 
     [22, 40, 22, 18, 41], 
     [86, 23, 58, 38, 69], 
     [98, 60, 70, 71, 3], 
     [44, 8, 33, 86, 66]], 

     [[62, 45, 56, 80, 22], 
     [27, 95, 55, 87, 22], 
     [42, 17, 48, 96, 65], 
     [36, 64, 1, 85, 31], 
     [10, 13, 15, 7, 92], 
     [27, 74, 31, 91, 60]]]) 
>>> SPN.shape 
(3, 6, 5) 
>>> SPN[0].shape 
(6, 5) 

.. in realtà, sembra che si può decidere np.random.uniform(0, 100, (samples, 6, 5)), perché vuoi che gli elementi siano a virgola mobile, non interi. Bene, funziona allo stesso modo. : ^)


Si noti che quello che hai fatto non è equivalente a np.random.uniform, perché si sta scegliendo un array di valori compresi tra 0 e 1 e quindi moltiplicando tutti loro da un numero intero fisso. Presumo che in realtà non fosse quello che stavi cercando di fare, perché è un po 'insolito; si prega di commentare se quello è quello che volevi davvero.

+0

Hai letto la mia mente e mi hai fornito una buona soluzione, grazie. –