私は解決するための問題を抱えており、私は良い解決策を考え出すことができません。python numpy配列です。どのように効率的に複数の配列をスライスするには?
私は10x10の配列を得て、私は3x3の "小さな配列"をスライスしたいと思います。私は基本的には、第1のスライスとnumpyの配列のパッチを作成し、その後他のすべてのスライスを追加
array = np.arange(100).reshape((10,10))
patch = np.array(array[:3, :3]
for n in range(3, 10, 3):
for m in range(3, 10, 3):
patch = numpy.append(patch, array[n:n+3, m:m+3]
:今、私はこれを次のように行います。これの問題は、その恐ろしいほど遅くて、numpyのスライシングの機会をうまく利用していないことです。私ははるかに大きな配列の高い数のためにこれを行う必要があります。 誰も私にこれをより効率的にする方法のアドバイスを与えることができますか? 1000ありがとう!
なぜ「パッチ」を追加しますか?もしpatchがスライス、すなわち 'patch = array [n:n + 3、m:m + 3] 'スライスであれば、' patch'で変更された値は 'array'で変更されます。メモリの問題であれば、[dask](http://dask.pydata.org/en/latest/) –
こんにちは、お返事ありがとうございます。私は最後に持っていたいです大きな配列配列に可能なすべての3x3スライスを含む配列(パッチ)。私はこれを、1つのエントリ(スライス1)で適切な次元(私は自分の仕事でより次元の配列を使用しています)を作成し、後で他のスライスを追加するという醜い方法で行います。あなたは私がそれを行う方法で言うも配列を変更するか?私はそれをしたくない、配列はパッチから独立しているべきである – idontknow
私はまだあなたがパッチに配列を分割したい理由、または変更パッチが配列のその部分を変更することがなぜ問題なのか、また、軸を設定せずにappendを使うと、2次元配列を1次元に変えることができます。いくつかの簡単な例を使って何をしたいのかを見せてもらえますか? –