select 根据给定条件从多维数组中
select from multi-dimensional arrays based on a given condition
有一个形状为 data
的数组,例如 (5, 10, 2)
;和其他两个列表,x1
和 x2
。两种尺寸 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]
代码假定 x1
和 x2
是长度等于 data
的第二个维度(在本例中为 10)的列表。请注意,代码仅 returns 值,而不是值的索引。
如果您有任何问题,请告诉我。
有一个形状为 data
的数组,例如 (5, 10, 2)
;和其他两个列表,x1
和 x2
。两种尺寸 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]
代码假定 x1
和 x2
是长度等于 data
的第二个维度(在本例中为 10)的列表。请注意,代码仅 returns 值,而不是值的索引。
如果您有任何问题,请告诉我。