2017-04-15 10 views
1

私は幾分単純なことをしていますが、まだnumpy mgridで成功しません& meshgrid。 私は100個の要素のnumpyのベクトルを有する:numpy mgridまたはmeshgridをその単純なタスクに使用する方法

[0,0,0...0] 

を、私はそのような1000x100 numpyの配列を作成したいと考え、次のベクトル値に切り替え、0.1によってベクトル値のいずれかを増加させるたびに1.0に達したとき。 だから、最初の反復が私を与える必要があります。

[1.0 0.1 0 0..0] 
[1.0 0.2 0 0..0] 
[1.0 0.3 0 0..0] 

などなど:

[0.1 0 0..0] 
[0.2 0 0..0] 
. 
. 
[0.9 0 0..0] 
[1.0 0 0..0] 

今から私は、以前の値を保持する、第2のベクトル数に繰り返す必要があります。最終的な行列は1000x100のようなものでなければなりませんが、すべての値を1つの大量の配列でまとめて取得する必要はありません。反復するたびに、対応するベクトルを繰り返して生成するだけで十分です。 ありがとうございます!

def create_stepped_cols(n): # n = number of cols 
    out = np.zeros((n,10,n)) 
    r = np.linspace(0.1,1.0,10) 
    d = np.arange(n) 
    out[d,:,d] = r 
    out.shape = (-1,n) 
    np.maximum.accumulate(out, axis=0, out = out) 
    return out 

サンプルの実行 - -

答えて

1

はここinitializationnp.maximum.accumulateを使ったアプローチだ

In [140]: create_stepped_cols(3) 
Out[140]: 
array([[ 0.1, 0. , 0. ], 
     [ 0.2, 0. , 0. ], 
     [ 0.3, 0. , 0. ], 
     [ 0.4, 0. , 0. ], 
     [ 0.5, 0. , 0. ], 
     [ 0.6, 0. , 0. ], 
     [ 0.7, 0. , 0. ], 
     [ 0.8, 0. , 0. ], 
     [ 0.9, 0. , 0. ], 
     [ 1. , 0. , 0. ], 
     [ 1. , 0.1, 0. ], 
     [ 1. , 0.2, 0. ], 
     [ 1. , 0.3, 0. ], 
     [ 1. , 0.4, 0. ], 
     [ 1. , 0.5, 0. ], 
     [ 1. , 0.6, 0. ], 
     [ 1. , 0.7, 0. ], 
     [ 1. , 0.8, 0. ], 
     [ 1. , 0.9, 0. ], 
     [ 1. , 1. , 0. ], 
     [ 1. , 1. , 0.1], 
     [ 1. , 1. , 0.2], 
     [ 1. , 1. , 0.3], 
     [ 1. , 1. , 0.4], 
     [ 1. , 1. , 0.5], 
     [ 1. , 1. , 0.6], 
     [ 1. , 1. , 0.7], 
     [ 1. , 1. , 0.8], 
     [ 1. , 1. , 0.9], 
     [ 1. , 1. , 1. ]]) 

In [141]: create_stepped_cols(100).shape 
Out[141]: (1000, 100) 
+0

それは魔法のように動作し、非常に感謝! –

関連する問題