按行查找与二维数组条件匹配的元素索引

Find indices of elements that match condition of 2D array by row

我有一个名为 A 的带有浮点数的二维数组,尺寸为 n x m。我有一个名为 B 的一维浮点数数组。对于 A 中的每一行 i,我想找到小于 B

中第 i 个值的值的索引

我尝试使用 np.argwhere

A = np.array([[.1,.2,.3,.4], [.1,.2,.3,.4], [.1,.2,.3,.4]]) B = np.array([0.15, 0.25, 0.35]) np.argwhere(A.T < B) 这是输出

array([[0, 0],[0, 1],[0, 2],[1, 1],[1, 2],[2, 2]])

我想要的是这样的

[array([0,1,2]), array([1,2]), array([2])]

当然,我希望它被矢量化而不是循环。

使用 np.where + np.split

x, y = np.where(A.T < B)

s = np.flatnonzero(np.append([False], x[1:] != x[:-1]))

np.split(y, s)

[array([0, 1, 2], dtype=int64),
 array([1, 2], dtype=int64),
 array([2], dtype=int64)]