[MATRIX-SIG] reverse of take?
Andrew P. Mullhaupt
Thu, 26 Jun 1997 23:07:10 -0400
At 06:07 PM 6/26/97 -0700, Johann Hibschman wrote:
>On Thu, 26 Jun 1997, Andrew P. Mullhaupt wrote:
>> This could easily be added to NumPy (along with a couple of other really
>> useful forms of indexing). The long history of successful use of the
>> highly flexible indexing in S is a 'proof of concept'.
>Hmm. Would it be acceptable to define (in a separate extension module)
>a function to do this, or do you feel that the built-in syntax is
>I haven't done much with the NumPy internals, but I'd think that it would
>be almost trivial to write a simple extension to do
> multi_set(array, indices, values)
>by implementing a C for-loop over the indices. Is there a hidden subtlety
>that I'm missing?
There are a couple points.
First, it _looks_ a lot better to anyone who has used an array language to
array[indices] = values
instead. It is also a _lot_ easier to remember, and it does the expected
thing. A function such as "multi_set" may or may not be suggestive to the
Consider that the "function style" code for
z[k] = foo(x[k], y[k])
looks something like
multi_set(z, k, foo(multi_get(x, k), multi_get(y, k)))
and we haven't even started to deal with anything slippery.
Second, you want to put this operation where it will be exposed to
etc. so you want it to be a _method_. Since it conceptually replaces an
existing method, it's better to use that syntax. I think you can get this
pretty easily with __setitem__ or __setslice__, so the syntax shouldn't
really be an issue.
MATRIX-SIG - SIG on Matrix Math for Python
send messages to: email@example.com
administrivia to: firstname.lastname@example.org