58

私はPythonとnumpyが初めてです。1 次元の sequence: をスライスarr[start:end]し、配列内の要素にアクセスする方法を理解しました: el = arr[row][col]

slice = arr[0:2][0:2](where is a numpy array) のようなものを試しarrても、最初の 2 行と列は得られませんが、最初の 2 行が繰り返されます。私は今何をしましたか、そして別の次元に沿ってどのようにスライスしますか?

4

1 に答える 1

85

を使用する場合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[i])。次に、その行から必要な列をスライスして、作成中のリストに追加します。

単純に試してみるとarr[0:2]、最初の 2 行が得られます。これをもう一度arr[0:2][0:2]スライスすると、最初の 2 行をもう一度スライスするだけです。

*これは実際にはnumpy配列でも機能しますが、上に投稿した「ネイティブ」ソリューションに比べて遅くなります。

于 2013-06-24T13:48:19.637 に答える