python蒙版mastrice用于选择顶点列表



i有一个布尔的numpy矩阵,其形状为(n,n),例如:

[[True False False True]
 [...]
 [True True True False]]

和一个数量的顶点,其形状为(n,3),例如:

[[0.1, 0.2, 0.3]
 [0.4, 0.5, 0.6]
 [0.7, 0.8, 0.9]
 [1.0, 1.1, 1.2]]

我想计算一个带有形状(n,变化)的矩阵,其中每一行是与布尔矩阵的每一行选择的顶点列表。从上面的示例:

[[[0.1, 0.2, 0.3], [1.0, 1.1, 1.2]]
 [...]
 [[0.1, 0.2, 0.3],[0.4, 0.5, 0.6],[0.7, 0.8, 0.9]]]

可能吗?

预先感谢

这是提取行之后的一种方法,从蒙版中列 -

r,c = np.where(mask)
start = np.r_[0,np.flatnonzero(r[1:] != r[:-1])+1]
stop = np.r_[start[1:], r.size]
data_rep = data[c]
out = [data_rep[start[i]:stop[i]] for i in range(len(start))]

谢谢Divakar!我尝试了您的解决方案,并且可以正常工作。

但是,我还尝试了一个带有循环的解决方案:

result = []
for i in range(len(data)):
    result.append(data[mask[i]])

它比这样做快:

result = extract_rows_using_mask(data, mask)

很奇怪吗?

最新更新