2012-01-04 13 views
0

以下のコードは、0の複数のセットを作成し、乱数で埋めて、最初のカラムをとり、最大値を計算するコードです。問題は私ができることですすべての行(つまり行2から10まで) iveはforループに入れようとしましたが、伝統的なy = 1、mx [:、y]、y = y + 1で動作しませんでした。forループ内の配列内のカラムにアクセスする

can anyoneいくつかの助けを提供する?歓声

import pylab 

mx = pylab.zeros ((10,6)) 

for j in range(0,10): 
    mx[j] = pylab.randn() 

p = mx[:,1] 
a = max (p) 
+0

あなたの最近の編集については、その理由がある場合は、フラグを立ててください( 'flag'をクリックし、' other'を選択してください)。私は今それをロックしています。 –

答えて

1

あなたは 2〜10の最大、 はその後、すべての行の最大を見つけるためにmx.max(axis=1)を使用して、2〜10行だけにそれをダウンスライスを探している場合:

mx.max(axis=1)[2:] 

例えば、そして

In [38]: mx = np.arange(60).reshape((10, 6)) 

In [39]: mx 
Out[39]: 
array([[ 0, 1, 2, 3, 4, 5], 
     [ 6, 7, 8, 9, 10, 11], 
     [12, 13, 14, 15, 16, 17], 
     [18, 19, 20, 21, 22, 23], 
     [24, 25, 26, 27, 28, 29], 
     [30, 31, 32, 33, 34, 35], 
     [36, 37, 38, 39, 40, 41], 
     [42, 43, 44, 45, 46, 47], 
     [48, 49, 50, 51, 52, 53], 
     [54, 55, 56, 57, 58, 59]]) 

場合

In [40]: mx.max(axis=1)[2:] 
Out[40]: array([17, 23, 29, 35, 41, 47, 53, 59]) 

最後に、larsmanがすでに示したように、mx = np.random.randn(10, 6) を使用してランダムな行列を作ることができます。

+0

は、これは完璧に動作非常、イム今 の段階で 'インポートpylab MX = pylab.arange(60) MX = pylab.randn(10,6)>印刷MX Y = mx.max(軸= 1) print y' –

+0

各列に最大値を生成するため、新しい最大値に達する確率を計算する方法を検討する必要があります。つまり、最初の列には新しい最大値の100% 2番目の列には、新しい最大値などの50%の可能性があります。これを行う唯一の方法は、2番目の列の値のどれが最初の列の最大値よりも大きいかを示すコードを持つことです列など、任意のアイデア? @unutbu –

1
import numpy as np 
mx = np.random.randn(10, 6) 
np.max(mx, axis=0) 

は私の代わりにPylabのnumpyのを使用してのライブラリーを撮影しました。それはピラブが内部的に使うものです。 np.maxの代わりにpylab.amaxを使用することもできます。これはまったく同じ機能です。

+0

これは最初の列の最大値を1回だけ出力します。列1の最初の最大値、次に列2の最大値、次に3番目の値などを出力します。前の列) アイデア? –

+0

@ user1114835:これは、「最初の列の最大値を一度に印刷します」とすると、あなたの乱数で不運になったり、コピー貼り付けに間違いをしたことになります。このコードでは、「仮定する」部分を除いて、必要なものを正確に提供します。そのためのループを書く必要があります。 –

関連する問題