我有一个np.array形状的(15,3)

final_vals = array([[  37,  -84, -143],
       [  29,    2,   -2],
       [ -18,   -2,    0],
       [  -3,    6,    0],
       [ 361,   -5,    2],
       [ -23,    4,    8],
       [   0,   -1,    0],
       [  -1,    1,    0],
       [  62,  181,   83],
       [-193,  -14,   -2],
       [  42, -154,  -92],
       [  16,  -13,    1],
       [ -10,   -3,    0],
       [-299,  244,  110],
       [ 223, -237, -110]])

我试图找到元素值介于-1和1之间的行。在打印在第6行和第7行上方的数组中是目标/结果行。
我试过了,
result_idx = np.where(np.logical_and(final_vals>=-1, final_vals<=1))

又回来了,
result_idx = (array([ 2,  3,  6,  6,  6,  7,  7,  7, 11, 12], dtype=int64),
              array([2, 2, 0, 1, 2, 0, 1, 2, 2, 2], dtype=int64))

我希望我的程序只返回行号

最佳答案

您可以获取所有元素的绝对值,并检查哪些行的元素小于或等于1。然后使用np.flatnonzero查找所有列都满足条件的索引:

np.flatnonzero((np.abs(final_vals) <= 1).all(axis=1))

输出
array([6, 7], dtype=int64)

关于python - 如何在给定的numpy 2D数组中查找值介于-1和1之间的行?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/54556450/

10-08 22:01