2017-10-20 35 views
2

Existe-t-il un moyen de créer un tableau NxN (tableau 2d) d'éléments, où chaque élément est un tableau de 3 nombres choisis au hasard entre 0 et 1?Faire un tableau NxN de tableaux 1x3 de nombres aléatoires (python)

sortie devrait ressembler à ceci:

(0.2,0.45,0.98), (0.7,0.58,0.11) ... 
(1.0,0.05,0.63, ... 
. 
. 
. 

etc.

J'ai essayé de le faire, mais il doit y avoir une façon plus élégante. Code inclus ci-dessous:

import numpy as np 
import matplotlib.pyplot as plt 

lat = [] 

for _ in range(2): 

     w = [] 

     for _ in range(2): 
       a = np.random.uniform(0.0,1.0) 
       b = np.random.uniform(0.0,1.0) 
       c = np.random.uniform(0.0,1.0) 

       D = np.array([a,b,c]) 

       w.append(D) 

     lat.append(w) 

     if _ >= 1: 
       np.hstack(lat) 

Répondre

1

Vous pouvez utiliser numpy.random.rand où le premier argument est le nombre de lignes que vous voulez générer, puis le second argument peut être 3 dans votre cas pour chaque ligne.

>>> import numpy as np 
>>> np.random.rand(10,3) 
array([[ 0.80325895, 0.70250496, 0.4256057 ], 
     [ 0.28863352, 0.14066084, 0.08918333], 
     [ 0.52669678, 0.07641594, 0.92869148], 
     [ 0.40105226, 0.88909989, 0.25459293], 
     [ 0.8202674 , 0.34435551, 0.49131868], 
     [ 0.14251546, 0.51029693, 0.54037975], 
     [ 0.07118544, 0.95467079, 0.87722367], 
     [ 0.33530285, 0.64395738, 0.8289817 ], 
     [ 0.5461907 , 0.93165573, 0.73256816], 
     [ 0.31204938, 0.38230589, 0.49739997]]) 
+0

Donc, si je peux utiliser: np.random.rand (3,3,3) Cela me donne la matrice I décrit dans la question, mais les trois éléments qui vont dans la 3ème dimension il est donc comme une donnée cube. Merci CoryKramer! – user8188120

1

Vous pouvez utiliser numpy.reshape pour remodeler des nombres générés de façon aléatoire.

>>> N = 3 
>>> np.random.rand(N*N*3).reshape([N,N,3]) 
array([[[ 0.48513983, 0.49582462, 0.96211702], 
     [ 0.95061997, 0.63674441, 0.51228963], 
     [ 0.06988701, 0.9018317 , 0.63418989]], 

     [[ 0.31213247, 0.75325276, 0.04600117], 
     [ 0.23449785, 0.04731562, 0.89007085], 
     [ 0.25746369, 0.96337201, 0.6032985 ]], 

     [[ 0.2207508 , 0.43560328, 0.75067189], 
     [ 0.84054857, 0.28190793, 0.08875157], 
     [ 0.00419059, 0.13464854, 0.63074635]]]) 

Le résultat est un tableau 2d de tableau de 3 nombres.

>>> temp = np.random.rand(N*N*3).reshape([N,N,3]) 
>>> temp[0][0] 
array([ 0.48513983, 0.49582462, 0.96211702])