在 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]])
我有两个名为 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]])