2

是否有一种巧妙的方法可以遍历对象字典,调用每个对象的成员函数并将值分配给 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”解决方案。

4

2 回答 2

3

如果您使用enumerate. 您可以执行以下操作:

newTable = numpy.zeros( self.numObj )
for k, item in enumerate(self.dictTable.values()):
    newTable[k] = item.CalculateDutyCycle() * 100.0
于 2013-10-07T15:06:51.230 回答
1

我看不出numpy在这里使用有什么好处,因为您正在迭代一个常规的 Python 列表(values())。我只是做一个列表理解,然后将其转换为数组。您的数组也是 1d。 numpy在处理多维对象(与简单列表相反)时会发光。

list_answer = [item.CalculateDutyCycle() * 100.0 for item in self.dictTable.values()]
newTable = np.array(list_answer)
于 2013-10-07T20:44:01.217 回答