index operations now work on flattened indices

This commit is contained in:
Max Zwiessele 2013-10-07 07:41:23 +01:00
parent ed3b3414f8
commit f7f62ec605

View file

@ -18,15 +18,37 @@ class ParameterIndexOperations(object):
self._properties = {}
self._shape = param.shape
# def iteritems(self):
# for prop, indices in self._properties.iteritems():
# yield prop, self.unravel_indices(indices)
def iteritems(self):
for prop, indices in self._properties.iteritems():
yield prop, numpy.unravel_index(indices, self._shape)
return self._properties.iteritems()
def keys(self):
def properties(self):
return self._properties.keys()
def items(self):
return self._properties.items()
def iterproperties(self):
return self._properties.iterkeys()
def values(self):
return self._properties.values()
def itervalues(self):
return self._properties.itervalues()
def clear(self):
self._properties.clear()
def size(self):
return reduce(lambda a,b: a+b.size, self.itervalues(), 0)
# def iterindices(self):
# for indices in self.itervalues():
# yield self.unravel_indices(indices)
def iterindices(self):
return self.itervalues()
def indices(self, prop):
"""
@ -34,7 +56,7 @@ class ParameterIndexOperations(object):
these indices can be used as X[indices], which will be a flattened array of
all restricted elements
"""
return numpy.unravel_index(self._properties[prop], self._shape)
return self.unravel_indices(self._properties[prop])
def add(self, prop, indices):
ind = self.create_raveled_indices(indices)
@ -58,3 +80,6 @@ class ParameterIndexOperations(object):
else:
i = [slice(None), indices]
return numpy.array(numpy.ravel_multi_index(numpy.indices(self._shape)[i], self._shape)).flatten()
def unravel_indices(self, raveled_indices):
return numpy.unravel_index(raveled_indices, self._shape)