いくつかのタイプのインデックス配列(提案するためのインデックス配列のスタイル/形式)を使用して、ベース配列からnumpy配列の配列を取得します。私はforループでこれを簡単に行うことができますが、numpy放送を使う巧妙な方法があるのだろうかと疑問に思っていますか?インデックス配列を使用してnumpy配列からサブ配列を得る方法をベクトル化するには
制約:サブアレイのサイズは同じであることが保証されています。
up_idx = np.array([[0, 0],
[0, 2],
[1, 1]])
lw_idx = np.array([[2, 2],
[2, 4],
[3, 3]])
base = np.array([[1, 2, 3, 4],
[5, 6, 7, 8],
[9, 10, 11, 12]])
samples = []
for index in range(up_idx.shape[0]):
up_row = up_idx[index, 0]
up_col = up_idx[index, 1]
lw_row = lw_idx[index, 0]
lw_col = lw_idx[index, 1]
samples.append(base[up_row:lw_row, up_col:lw_col])
samples = np.array(samples)
print(samples)
> [[[ 1 2]
[ 5 6]]
[[ 3 4]
[ 7 8]]
[[ 6 7]
[10 11]]]
私が試してみた:
vector_s = base[up_idx[:, 0]:lw_idx[:, 1], up_idx[:, 1]:lw_idx[:, 1]]
をしかし、それはそれはそうただ無意味でした。
'up_pt'はどのように見えますか?形状? – kmario23
ああ申し訳ありません。私は投稿する前に変数を変更し、明らかに逃した。 – dranobob