A friend of mine introduced [array broadcasting](http://docs.scipy.org/doc/numpy/user/basics.broadcasting.html) in python `Numpy` package which is very convenient (also highly efficient). The idea is perfectly shown in this picture [![enter image description here][1]][1] Basically, I think it first check the shape of two arrays, if any dimension is not the same, it just broadcasting that dimension to make it same as the other array. Here is an excerpt from [General Broadcasting Rules](http://docs.scipy.org/doc/numpy/user/basics.broadcasting.html#general-broadcasting-rules): > When operating on two arrays, NumPy compares their shapes element-wise. It starts with the trailing dimensions, and works its way forward. Two dimensions are compatible when > 1. they are equal, or > 2. one of them is 1 >If these conditions are not met, a `ValueError: frames are not aligned` exception is thrown, indicating that the arrays have incompatible shapes. The size of the resulting array is the maximum size along each dimension of the input arrays. > Arrays do not need to have the same number of dimensions. This is different than built-in auto-threading in *Mathematica*: *Mathematica* can't do this {1,2}+{{1,2},{2,3},{3,4}} I know there is [duplicate question][2]. But by far, **no one gives an satisfied answer to why mathematica can't support such a powerful broadcasting.** At least, I think it doesn't bring any contradiction to mathematica list operation, we just need to check shape at first and broadcast it, quite natural. And maybe broadcasting can bring efficiency boost( because we don't have to transpose twice) ? [1]: https://i.sstatic.net/JcKv1.png [2]: http://mathematica.stackexchange.com/questions/32188/how-to-extend-list-of-numbers-with-number-arithmetic-to-list-of-x-with-x-ari