Here's code I use for basic 2d histogram
import numpy as np

def nint (x):
    if x >= 0:
        return int (x + 0.5)
    else:
        return int (x - 0.5)
    
class histogram2d (object):
    def __init__ (self, min, max, delta, clip=True):
        self.min = min
        self.max = max
        self.delta = delta
        self.clip = clip
        self.n_buckets = int ((max - min)/delta + 1)
        self.buckets = np.zeros ((self.n_buckets, self.n_buckets), dtype=int)

    def apply (self, x):
        if x > self.max:
            if self.clip:
                return self.max
            else:
                raise RuntimeError
        elif x < self.min:
            if self.clip:
                return self.min
            else:
                raise RuntimeError
        else:
            return x
        
    def __iadd__ (self, z):
        if hasattr (z, '__len__'):
            for e in z:
                self += e
            return self
        else:
            x_index = nint ((self.apply (z.real) - self.min) / self.delta)
            y_index = nint ((self.apply (z.imag) - self.min) / self.delta)
            self.buckets[x_index, y_index] += 1
            return self
    

_______________________________________________
NumPy-Discussion mailing list
NumPy-Discussion@scipy.org
http://mail.scipy.org/mailman/listinfo/numpy-discussion

Reply via email to