首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何使用numpy在3D数组列表中找到最接近的值?

如何使用numpy在3D数组列表中找到最接近的值?
EN

Stack Overflow用户
提问于 2020-05-10 00:31:11
回答 1查看 96关注 0票数 1

假设我有一个存储多个3D数组的变量arr

代码语言:javascript
运行
复制
arr = [[[1,2,3],
       [4,5,6],
       [10,11,12]]]

      [[[13,14,15],
        [16,17,18],
        [19,20,21]]]

如何从arr中获取与变量vals中的相应给定值最接近的值。应该仅在arr的第一个数组中搜索vals中第一个值的最接近值,类似地,在第二个数组中搜索第二个值

代码语言:javascript
运行
复制
vals = np.array([3.2, 6.8])

预期结果:

代码语言:javascript
运行
复制
nearest values = [3, 13]
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2020-05-10 00:38:37

假设您的值没有以任何顺序链接,我们可以扁平化数组以获得所需的结果:

代码语言:javascript
运行
复制
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]

编辑

您可以循环遍历数组中的每个切片以逐个检查切片:

代码语言:javascript
运行
复制
[a.ravel()[np.argmin(np.abs(a.ravel()-vals[i]))] for i, a in enumerate(arr)]
>>> [3, 13]
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/61700150

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档