0

我有一个尺寸为(Nt,Nx0,Ny0)的数组。对于轴 0 中的每个索引,我想在轴 1 和轴 2 中随机选择一个“矩形”。矩形具有固定大小 Nx1 x Nx2,Nx1 < Nx0 和 Ny1 < Ny0。

这段代码做了我想做的事:

import numpy as np

for i in range(Nt):
    x0ind = round(0.5*(Nx0-Nx1))+np.random.randint(-max_x, max_x)
    x1ind = x0ind+Nx1

    y0ind = round(0.5*(Ny0-Ny1))+np.random.randint(-max_y, max_y)
    y1ind = y0ind+Ny1

    ar1[i,:,:] = ar0[i,x0ind:x1ind,y0ind:y1ind]

我觉得应该可以使用 numpy 索引来做到这一点,例如:

import numpy as np

Nt = 100
Nx0 = 70
Ny0 = 70

Nx1 = 50
Ny1 = 50

max_x = 5
max_y = 5

ar0 = np.random.rand(Nt, Nx0, Ny0)

x_ind = np.random.randint(-max_x, max_x)
y_ind = np.random.randint(-max_y, max_y)

ar1 = ar0[:, x_ind:x_ind+Nx1, y_ind:y_ind+Ny1]

但是,这不起作用。是否可以在没有 for 循环的情况下执行此操作?

4

0 回答 0