1

Here is the bunch of points that I would like to extract only the rows with 0 being the 1st element or the column value of 0. This is the output snippet of the list.

array([[ 29.42787794, 453.        , 496.        ],
        [  **0.**        , **424.        , 491.**        ],
        [ 34.66987165, 453.        , 472.        ],
        [ 26.        , 414.        , 467.        ],
        [ 48.27007354, 393.        , 454.        ],
        [ 51.4781507 , 417.        , 440.        ]]),
 array([[ 24.        , 453.        , 496.        ],
        [ 34.66987165, 424.        , 491.        ],
        [  **0.**        , **453.        , 472.**        ],
        [ 39.3192065 , 414.        , 467.        ],
        [ 28.        , 453.        , 444.        ],
        [ 48.16637832, 417.        , 440.        ],
        [ 48.70318265, 469.        , 426.        ]]),
 array([[ 48.60041152, 453.        , 496.        ],
        [ 26.        , 424.        , 491.        ],
        [ 39.3192065 , 453.        , 472.        ],
        [  **0.        , **414.        , 467.****        ],
        [ 24.69817807, 393.        , 454.        ],
        [ 45.27692569, 453.        , 444.        ],
        [ 27.16615541, 417.        , 440.        ],
        [ 42.19004622, 392.        , 431.        ],
        [ 51.623638  , 433.        , 419.        ]])

So I want to extract the bolded points from this list of arrays. I am unsure on how to do it? I have tried numpy.where, np.any before appending the arrays into the list but nothing really seems to work. Moving forward I would like to know if its possible to use a list to get the bold points. The len(list) is the number the appended arrays together. So I am kinda confused on how can I go about retrieving just singular points from the separate arrays in a list.

2 Answers 2

3

Do you mean by:

>>> arr = np.vstack(arr)
>>> arr[arr[:, 0] == 0]
array([[  0., 424., 491.],
       [  0., 453., 472.],
       [  0., 414., 467.]])
>>> 

Or you try np.isclose:

>>> arr = np.vstack(arr)
>>> arr[np.isclose(0, arr[:, 0])]
array([[  0., 424., 491.],
       [  0., 453., 472.],
       [  0., 414., 467.]])
>>> 
Sign up to request clarification or add additional context in comments.

2 Comments

Can I also check if there is a way to remove the decimal point present after the numbers?
@Kabster Use astype(int) : arr[arr[:, 0] == 0].astype(int)
1

One approach is to np.isclose to detect the rows where the first element is close to zero:

res = [arr[np.isclose(0, arr[: ,0])] for arr in lst]
print(res)

Output

[array([[  0., 424., 491.]]), array([[  0., 453., 472.]]), array([[  0., 414., 467.]])]

Comments

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.