Tim Hochberg (el 2006-12-20 a les 14:29:57 -0700) va dir:: > Let's look at simpler than where, which is a confusing function. How > about *sin*. > [...]
Ok, I think I already get the idea about the need of adding extra opcodes if ``where()`` only accepted booleans as first arguments. Thanks for the explanation! :) :: > It would be possible to adapt your original idea. We could do the following: > > 1. Add a function boolean() to the numexpr namespace. This would cast > it's argument to an array of bools. > 2. Tweak the compile (actually, probably where_func in > expressions.py) to compile where(x,a,b) as where(bool(x),a,b) > 3. Change where to take bools as the first argument. > > Or, maybe it would be cleaner to instead change the casting rules so > that casting to bool happens automagically. Having cycles in the casting > rules frightens me a bit, but it could probably be made to work. I understand that the new ``boolean()`` function and the "downwards" casting to boolean are functionally equivalent and require the same number of new opcodes. However, if cycles in casting rules are frowned upon (though I don't see any problem at forst sight), I would opt for the fully explicit ``boolean()`` function. :: > So, in summary, I think that the general idea you proposed could be made > to work with some more effort. Conceptually, it's cleaner and it could > be made more efficient for the common case. On the downside, this would > require three new opcodes, as opposed to a single new opcode to do the > simple minded fix. So, I'm still a bit up in the air as to whether it's > a good idea. Well, my previous patch works without adding new opcodes; however, one is no longer able to use ``where(x, a, b)`` with ``x`` being something other than a boolean array, so one should use ``where(x != 0, a, b)``, which is more explicit about its meaning. Nonetheless, I see using non-booleans as boolean conditions as an idiom, and I don't know how frequently that feature will be used in numerical computations. So I'm also in the air about the idea. ;) Cheers, :: Ivan Vilata i Balaguer >qo< http://www.carabos.com/ Cárabos Coop. V. V V Enjoy Data ""
signature.asc
Description: Digital signature
_______________________________________________ Numpy-discussion mailing list Numpy-discussion@scipy.org http://projects.scipy.org/mailman/listinfo/numpy-discussion