On Sun, Feb 8, 2015 at 5:28 PM, <josef.pktd@gmail.com> wrote:
On Sun, Feb 8, 2015 at 4:56 PM, Matthew Brett <matthew.brett@gmail.com> wrote:
> Hi,
>
> On Sun, Feb 8, 2015 at 1:39 PM, Simon Wood <sgwoodjr@gmail.com> wrote:
>>
>>
>> On Sun, Feb 8, 2015 at 4:24 PM, Stefan Reiterer <domors@gmx.net> wrote:
>>>
>>> I don't think this is a good comparison, especially since broadcasting is
>>> a feature not a necessity ...
>>> It's more like turning off/on driving assistance.
>>>
>>> And as already mentioned: other matrix languages also allow it, but they
>>> warn about it's usage.
>>> This has indeed it's merits.
>>> Gesendet: Sonntag, 08. Februar 2015 um 22:17 Uhr
>>> Von: "Charles R Harris" <charlesr.harris@gmail.com>
>>> An: "Discussion of Numerical Python" <numpy-discussion@scipy.org>
>>> Betreff: Re: [Numpy-discussion] Silent Broadcasting considered harmful
>>>
>>>
>>> On Sun, Feb 8, 2015 at 2:14 PM, Stefan Reiterer <domors@gmx.net> wrote:
>>>>
>>>> Yeah I'm aware of that, that's the reason why I suggested a warning level
>>>> as an alternative.
>>>> Setting no warnings as default would avoid breaking existing code.
>>>> Gesendet: Sonntag, 08. Februar 2015 um 22:08 Uhr
>>>> Von: "Eelco Hoogendoorn" <hoogendoorn.eelco@gmail.com>
>>>> An: "Discussion of Numerical Python" <numpy-discussion@scipy.org>
>>>> Betreff: Re: [Numpy-discussion] Silent Broadcasting considered harmful
>>>> > I personally use Octave and/or Numpy  for several years now and never
>>>> > ever needed braodcasting.
>>>> But since it is still there there will be many users who need it, there
>>>> will be some use for it.
>>>>
>>>> Uhm, yeah, there is some use for it. Im all for explicit over implicit,
>>>> but personally current broadcasting rules have never bothered me, certainly
>>>> not to the extent of justifying massive backwards compatibility violations.
>>>> Take It from someone who relies on broadcasting for every other line of
>>>> code.
>>>>
>>>
>>>
>>> It's how numpy works. It would be like getting into your car and being
>>> warned that it has wheels.
>>>
>>> Chuck
>>> _______________________________________________ NumPy-Discussion mailing
>>> list NumPy-Discussion@scipy.org
>>> http://mail.scipy.org/mailman/listinfo/numpy-discussion
>>>
>>
>> I agree, I do not think this is a good comparison. All cars have wheels,
>> there are no surprises there. This is more like a car that decides to do
>> something completely different from everything that you learned about in
>> driving school.
>
>> I find the broadcasting aspect of Numpy a turn off. If I go to add a 1x3
>> vector to a 3x1 vector, I want the program to warn me or error out. I don't
>> want it to do something under the covers that has no mathematical basis or
>> definition. Also, Octave may provide a warning, but Matlab errors
>> out..."Matrix dimensions must agree". Which they must, at least in my world.
>
> In a previous life, many of us were very serious users of Matlab,
> myself included.
>
> Matlab / Octave have a model of the array as being a matrix, but numpy
> does not have this model.   There is a Matrix class that implements
> this model, but usually experienced numpy users either never use this,
> or stop using it.
>
> I can only say - subjectively I know - that I did not personally
> suffer from this when I switched to numpy from Matlab, partly because
> I was fully aware that I was going to have to change the way I thought
> about arrays, for various reasons.  After a short while getting used
> to it, broadcasting seemed like a huge win.  I guess the fact that
> other languages have adopted it means that others have had the same
> experience.
>
> So, numpy is not a straight replacement of Matlab, in terms of design.
>
> To pursue the analogy, you have learned to drive an automatic car.
> Numpy is a stick-shift car.  There are good reasons to prefer a
> stick-shift, but it does mean that someone trained on an automatic is
> bound to feel that a stick-shift is uncomfortable for a while.


I think the analogy is Python printing at the start and all the time a warning
"We use indentation, not braces, brackets or `end` to indicate blocks of code."

Josef



Not quite the same. This is not so much about language semantics as mathematical definitions. You (the Numpy community) have decided to overload certain mathematical operators to act in a way that is not consistent with linear algebra teachings. This can be a bit confusing for people who develop and implement mathematical algorithms that have a strong foundation in linear algebra, irrespective of the language they are migrating from.

With that said, I do appreciate the comments by Matthew, Eelco and others. Numpy is *not* a linear algebra package, so it does not adhere to the same mathematical definitions. This realization has cleared some things up.

-Simon


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