假设我有一个存储多个3D数组的变量arr
。
arr = [[[1,2,3],
[4,5,6],
[10,11,12]]]
[[[13,14,15],
[16,17,18],
[19,20,21]]]
如何从arr
中获取与变量vals
中的相应给定值最接近的值。应该仅在arr
的第一个数组中搜索vals
中第一个值的最接近值,类似地,在第二个数组中搜索第二个值
vals = np.array([3.2, 6.8])
预期结果:
nearest values = [3, 13]
发布于 2020-05-10 00:38:37
假设您的值没有以任何顺序链接,我们可以扁平化数组以获得所需的结果:
import numpy as np
arr = np.array([[[1,2,3], [4,5,6], [10,11,12]],
[[1,2,3], [4,5,6], [7,8,9]]])
vals = np.array([3.2, 6.8])
[arr.ravel()[np.argmin(np.abs(arr.ravel()-v))] for v in vals]
>>> [3, 7]
编辑
您可以循环遍历数组中的每个切片以逐个检查切片:
[a.ravel()[np.argmin(np.abs(a.ravel()-vals[i]))] for i, a in enumerate(arr)]
>>> [3, 13]
https://stackoverflow.com/questions/61700150
复制相似问题