【问题标题】:python map data to list of lists/tuplespython将数据映射到列表/元组列表
【发布时间】:2015-02-02 03:23:59
【问题描述】:

我有一个 3D 点列表,我正在尝试将其映射到如下列表:

plot = map(lambda x: (x[0], x[1], x[2], voxelGrid[x]), data)

这不符合我的要求。 目的是让plot[0] 保存第一个数据索引中的所有值,plot[1] 保存第二个索引中的所有值,依此类推。

我可以通过对我尝试分组的每个不同值执行列表推导来真正低效地做到这一点,但我觉得有更好的方法。

数据

data = [(35, 35, 32), (35, 36, 33), (35, 38, 34)...] # xyz points

voxelGrid 是一个 3D numpy 数组,其中包含上述每个点的值。

我正在尝试得到这个输出:

plot = [(35,35,35),(35,36,38), (32,33,34), (voxelGrid[first point], voxelGrid[second point], voxelGrid[third point])]

【问题讨论】:

  • plot = zip(*data) 可能是。
  • 我也在尝试添加第四个元素,这是xyz 位置的强度值
  • 你在使用 NumPy 吗?请提供一些示例数据和预期输出。

标签: python list numpy list-comprehension


【解决方案1】:

zip(*)tuple() 和生成器表达式一起使用:

zip(*data) + [tuple(voxelGrid[x] for x in data)]

【讨论】:

    【解决方案2】:

    你想要这样吗??

    >>> data = [(35, 35, 32), (35, 36, 33), (35, 38, 34)]
    >>> zip(*data)
    [(35, 35, 35), (35, 36, 38), (32, 33, 34)]
    

    【讨论】:

      【解决方案3】:
      plot = zip(*[(x[0], x[1], x[2], voxelGrid[x]) for x in data])
      

      【讨论】:

        猜你喜欢
        • 2016-07-31
        • 2015-07-14
        • 2015-04-30
        • 1970-01-01
        • 2017-06-28
        • 1970-01-01
        • 2011-01-13
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多