2 つのインデックス配列があり、間にあるすべてのインデックスをスライス関数のように手動で返したい場合は、次のようになります。
ind1 = np.array([2,6])
ind2 = np.array([2,3])
final = np.array([[2,2,2], [4,5,6]])
スライスする軸が固定されていないため、次のように考えました。
def index_slice(ind1,ind2):
return np.indices( 1 + ind1 - ind2 ) + ind2[:,np.newaxis,np.newaxis]
final = index_slice(ind1,ind2)
ただし、これは依存し1 + ind1 > ind2
ており、最後のインデックスも含まれています(pythonicではありません)。これを行う関数、またはよりクリーンな実装を知っている人はいますか?
前もって感謝します。ディエゴ
PSこのアイデアがどこから来たのかについての背景を説明します。行列の部分行列を検討していますが、2 つのコーナーのインデックスからそれらにアクセスしたいと考えています。問題の性質上、@ pelsonの回答でわかるように、特定のコーナーが常に同じ方向を向いているとは限りません。