在 ndarrays 中找到最接近零的值

Find values closest to zero among ndarrays

我有两个名为 A 和 B 的 numpy ndarray。每个 ndarray 的维度为 2 x 3。对于每个网格点,我必须找到两个数组中最接近零的元素并相应地分配一个标志。该标志对数组 A 取值 1,对数组 B 取值 2。也就是说,如果数组 A 的 (0,0)(即第 0 行和第 0 列)中的元素与 (0,0) 相比最接近零数组 B 的元素,然后输出在第 0 行和第 0 列的位置分配值 1。输出数组的维度为 1 x 3。

下面我举个例子

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]])

输出应该是

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

有没有不用写for循环的有效方法?非常感谢。

这是我会做的:

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

输出:

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