私は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 行が繰り返されます。私は今何をしましたか、そして別の次元に沿ってどのようにスライスしますか?
を使用する場合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配列でも機能しますが、上に投稿した「ネイティブ」ソリューションに比べて遅くなります。