我想使用某種類型的索引數組(索引數組的樣式/格式打開以獲得建議)從基本數組中獲取子數組的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