特定の次元に沿って移動しながら、これまでに取得した最大値を格納するために 2 次元配列を反復処理する簡単な方法はありますか。たとえば、私は配列を持っています:
[[2 , 1, 5],
[-1, -1, 4],
[4, 3, 2],
[2 , 3, 4]]
次の出力が必要です。
[[2 , 2, 5],
[-1, -1, 4],
[4, 4, 4],
[2 , 3, 4]]
ありがとう!
簡単; 使用accumulate
:
>>> numpy.maximum.accumulate(a, axis=1)
array([[ 2, 2, 5],
[-1, -1, 4],
[ 4, 4, 4],
[ 2, 3, 4]])
計算時間が問題にならない場合は、次のようなことができます。
my_new_array = [ [max(my_array[i][:j+1]) for j in range(len(my_array[i]))] for i in range(len(my_array))]
ただし、実際には計算時間効率が良くありません。おそらく、2 ループを実行する方がはるかに効率的です。