select 根据给定条件从多维数组中

select from multi-dimensional arrays based on a given condition

有一个形状为 data 的数组,例如 (5, 10, 2);和其他两个列表,x1x2。两种尺寸 10。根据以下条件,我想要 data 中的 select 个子集,

Across the second dimension
 If     x1[i]<= data[j, i,0] <=x2[i], then we will select data[j, i,:]

我试过了selected = data[x1<=data[:,:,0]<=x2]。这是行不通的。我不清楚实现这种基于条件的 selection.

的有效(或矢量化)方法是什么

下面的代码选择 data 中第三维为 0 的所有值(即每个值都有一些索引 data[i, j, 0] 并且该值小于对应的 x2并且 >= 比相应的 x1:

idx = np.where(np.logical_and(data[:, :, 0] >= np.array(x1), data[:, :, 0] <= np.array(x2)))

# data[idx] contains the full rows of length 2 rather than just the 0th column, so we need to select the 0th column.
selected = data[idx][:, 0]

代码假定 x1x2 是长度等于 data 的第二个维度(在本例中为 10)的列表。请注意,代码仅 returns 值,而不是值的索引。

如果您有任何问题,请告诉我。