按行查找与二维数组条件匹配的元素索引
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)]
我有一个名为 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)]