ForumWhiner
ForumWhiner

Reputation: 121

Find values closest to zero among ndarrays

I have two numpy ndarrays named A and B. Each ndarray has dimension 2 by 3. For each of the grid point, I have to find which element of the two arrays is closest to zero and assign a flag accordingly. The flag takes value 1 for array A and value 2 for array B. That is, if the element in (0,0) (i.e., row 0 and column 0) of array A is closest to zero compared to (0,0) element of array B, then the output assigns a value 1 in position row 0 and column 0. The output array will have the dimension 1 by 3.

I give an example below

A= np.array([[0.1,2,0.3],[0.4,3,2]])
B= np.array([[1,0.2,0.5],[4,0.03,0.02]])

The output should be

[[1,2,1],[1,2,2]]

Is there an efficient way of doing it without writing for loop? Many thanks.

Upvotes: 0

Views: 61

Answers (1)

yann ziselman
yann ziselman

Reputation: 2002

Here's what i would do:

import numpy as np

a = np.array([[0.1,2,0.3],[0.4,3,2]])
b = np.array([[1,0.2,0.5],[4,0.03,0.02]])

c = np.abs(np.stack([a, b])).argmin(0)+1

Output:

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

Upvotes: 1

Related Questions