2017-10-20 20 views
2

要素のNxN配列(2次元配列)を作る方法はありますか?各要素は0と1の間でランダムに選択された3つの数値の配列ですか?乱数の1x3配列のNxN配列を作成する

出力は次のようになります。

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

など

私はこれを行うにしようとしてきたが、よりエレガントな方法がなければなりません。以下のコードは含ま:

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) 

答えて

1

をあなたが最初の引数は生成したい行の数であり、2番目の引数は行ごとに、あなたのケースで3することができnumpy.random.randを使用することができます。

>>> 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

、私が使用している場合:私は、私は質問ではなく、それは、データのようなものですので、第三の次元に入る三つの要素で説明行列を与える np.random.rand(3,3,3) キューブ。 ありがとうCoryKramer! – user8188120

1

numpy.reshapeを使用すると、ランダムに生成された番号の形状を変更できます。

>>> 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]]]) 

結果は3つの数字からなる配列の2次元配列です。だから、

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