是否有一种灵活的方式来迭代对象字典,调用每个对象的成员函数并将值赋给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'解决方案。
答案 0 :(得分:3)
如果您使用enumerate
,则无需显式增加计数器。你可以这样做:
newTable = numpy.zeros( self.numObj )
for k, item in enumerate(self.dictTable.values()):
newTable[k] = item.CalculateDutyCycle() * 100.0
答案 1 :(得分:1)
我没有看到在这里使用numpy
有任何好处,因为您正在迭代常规Python列表(values())。我只是做一个列表理解,然后将其转换为数组。你的阵列也是1d。使用多维对象(而不是简单列表)时,numpy
会发光。
list_answer = [item.CalculateDutyCycle() * 100.0 for item in self.dictTable.values()]
newTable = np.array(list_answer)