私はPythonとnumpyの新機能です。私は1次元をスライスする方法を見つけました:arr[atart:end]
、そして配列の要素にアクセスしてください:el = arr[row][col]
。Python:多次元配列をスライスする
slice = arr[0:2][0:2]
(ここではarr
はnumpy配列です)を試しても、最初の2つの行と列は表示されませんが、最初の2行が繰り返されます。私は何をしましたか、そして別の次元に沿ってどのようにスライスしますか?
私はPythonとnumpyの新機能です。私は1次元をスライスする方法を見つけました:arr[atart:end]
、そして配列の要素にアクセスしてください:el = arr[row][col]
。Python:多次元配列をスライスする
slice = arr[0:2][0:2]
(ここではarr
はnumpy配列です)を試しても、最初の2つの行と列は表示されませんが、最初の2行が繰り返されます。私は何をしましたか、そして別の次元に沿ってどのようにスライスしますか?
あなたがnumpy
を使用している場合、これは簡単です:
slice = arr[:2,:2]
か、0年代、
slice = arr[0:2,0:2]
をしたい場合は、同じ結果を得るでしょう。
* slice
は、実際には内蔵型の名前です。一般的に、私はあなたのオブジェクトに異なる "名前"を与えることをお勧めします。
別の方法として、あなたはリストのリストで作業している場合は、*:
slice = [arr[i][0:2] for i in range(0,2)]
(ここで0は不要であることに注意してください:。[arr[i][:2] for i in range(2)]
も動作します)。
私がここで行ったことは、一度に1行ずつ()を取ることです。その列から必要な列をスライスし、それを私が作成しているリストに追加します。
あなたは素朴に試してみてください:arr[0:2]
あなたは再びarr[0:2][0:2]
をスライスすると、最初の2行をスライスするだけです。
*これは実際には低音のアレイでも機能しますが、上記の「ネイティブ」ソリューションと比較して遅くなります。
に更新しました。したがって、 'arr [0:2] [0:2]'は実際に 'arr [row] [col]'と比較しますか? – SlightlyCuban
@SlightlyCuban - 最新の回答をご覧ください。 – mgilson
@mgilson私はこれをうんざりし、幾分奇妙な結果を得ました。私は 'a = [[1,2,3]、[4,5,6]、[7,8,9]]' 'a [0] [:] = [1,2,3]'不思議なことに 'a [:] [0]'はまだ '[1,2,3]'です。私はこれが[1,4,7]であるべきだと言います。ここで何が間違っているのか教えていただければ幸いです。 –
どのデータ型が 'arr'ですか?それはリストのリストですか? – mgilson
@mgilson質問のタイプを – SlightlyCuban