Test if an array is broadcastable to a shape?

arrays, multidimensional-array, numpy, python

Solution

I really think you guys are over thinking this, why not just keep it simple?

def is_broadcastable(shp1, shp2):
    for a, b in zip(shp1[::-1], shp2[::-1]):
        if a == 1 or b == 1 or a == b:
            pass
        else:
            return False
    return True

Problem

What is the best way to test whether an array can be broadcast to a given shape? The "pythonic" approach of `try`ing doesn't work for my case, because the intent is to have lazy evaluation of the operation. I'm asking how to implement `is_broadcastable` below: ``` >>> x = np.ones([2,2,2]) >>> y = np.ones([2,2]) >>> is_broadcastable(x,y) True >>> y = np.ones([2,3]) >>> is_broadcastable(x,y) False ``` or better yet: ``` >>> is_broadcastable(x.shape, y.shape) ```

Original source