NumPyで2D配列のブロック平均を見つけたいです。簡単にするために、配列は次のようになっていると仮定します。
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]])
この配列をサイズ2x4の3つのブロックに分割し、3つのブロックすべての平均を求めます(平均の形状が2x4になるようにします。最初のブロックは最初の4列で形成され、次のブロックは次の列で形成されます) 4列など。つまり、私のブロックは次のとおりです。
array([[0, 1, 2, 3],
[12, 13, 14, 15]])
array([[ 4, 5, 6, 7],
[16, 17, 18, 19]])
array([[ 8, 9, 10, 11],
[20, 21, 22, 23]])
ループを使用してこれを行うことはできますが、最初にこの配列を3D配列に変換してから、3番目の軸に沿って3D配列でこのメソッドをreshape
使用する方がよいと感じています。これは、この質問mean
に似ている可能性があります。
誰かが私に提供してくれれば幸いです:
1)。そのようなトリックが存在する場合、3Dに変換することさえせずにブロック平均を実行するための適切なPythonicコマンド。
2)。2Dから3Dへの変換を行うための適切なPythonicコマンドでない場合。
3)。ループを使用するか、上記のコマンドを使用して実行する方が(スペースの観点から)効率的かどうかについての洞察。