【问题标题】:Iterating through dictionary and numpy array simultaneously同时遍历字典和numpy数组
【发布时间】:2013-10-14 05:23:22
【问题描述】:

是否有一种巧妙的方法可以遍历对象字典,调用每个对象的成员函数并将值分配给 numpy 数组。我有以下成员函数代码:

    # Preallocate for Number of Objects in the dictionary
    newTable = numpy.zeros( self.numObj );

    for item, nt in zip( self.dictTable.values(), newTable ):
        dt = item.CalculateDutyCycle() * 100.0


    return newTable    

这不会运行,因为我对 numpy 数组的分配没有正确完成。我可以使用 nditer 正确地做到这一点,但不确定如何将该迭代器与字典表迭代结合起来。我避免使用传统的“计数器”增量来访问数组,是否有更优雅的“pythonic”解决方案。

【问题讨论】:

  • 避免显式计数器的 Pythonic 方法是 enumerate。但是字典项的枚举顺序是不确定的。

标签: python arrays dictionary numpy


【解决方案1】:

我没有看到在这里使用numpy 有任何好处,因为您正在迭代常规 Python 列表 (values())。我只是做一个列表理解,然后将其转换为数组。您的数组也是 1d。 numpy 在处理多维对象(而不是简单列表)时表现出色。

list_answer = [item.CalculateDutyCycle() * 100.0 for item in self.dictTable.values()]
newTable = np.array(list_answer)

【讨论】:

    【解决方案2】:

    如果您使用enumerate,则不必显式增加计数器。你可以这样做:

    newTable = numpy.zeros( self.numObj )
    for k, item in enumerate(self.dictTable.values()):
        newTable[k] = item.CalculateDutyCycle() * 100.0
    

    【讨论】:

      猜你喜欢
      • 2017-08-12
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-06-30
      • 2019-12-14
      • 1970-01-01
      • 2014-07-31
      • 1970-01-01
      相关资源
      最近更新 更多