首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >3D列表索引--如何获得特定x,y的max(z)

3D列表索引--如何获得特定x,y的max(z)
EN

Stack Overflow用户
提问于 2014-08-11 09:30:46
回答 3查看 148关注 0票数 1

我有一个具有3D索引的列表,对于每个组合(x,y,z),我都有一个值。我想知道是否有一种方法可以得到特定x,y的最大z。

示例:

代码语言:javascript
运行
复制
 a=defaultdict(list)
 ...
 a = {(0,0,1): 5, (0,0,2): 1, (0,0,3): 4}

如何得到(x=0,y=0)的最大值(Z)(应该是3)?

我需要使用这种数据结构,因为我有一个具有未知z(Z上的异构数据)的动态三维矩阵。

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2014-08-11 09:41:18

怎么样:max(b[2] for b in a.keys() if b[0] == 0 and b[1] == 0)

这使用生成器表达式返回x和y为0的值的z坐标。

票数 1
EN

Stack Overflow用户

发布于 2014-08-11 09:37:42

如果您可以访问numpy,这可能要容易得多:

代码语言:javascript
运行
复制
>>> import numpy as np
>>> a = np.arange(1, 9).reshape((2, 2, 2))
>>> a
array([[[1, 2],
        [3, 4]],

       [[5, 6],
        [7, 8]]])
>>> a[0, 0].max()
2
票数 0
EN

Stack Overflow用户

发布于 2014-08-11 09:57:21

如果x和y的任何可能组合都需要这样做,我建议您重新排序数据,这样x和y的元组是键,而对应的z是值。然后,您可以简单地找到max z:

代码语言:javascript
运行
复制
from collections import defaultdict
a = {(0,0,1): 5, (0,0,2): 1, (0,0,3): 4, (1,0,2): 5}
b = defaultdict(list)
for xyz in a:
    xy = xyz[:-1]
    z = xyz[-1]
    b[xy].append(z)

max(b[(0,0)])
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/25240040

复制
相关文章

相似问题

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