[Numpy-discussion] common significant diigits

Benjamin Root ben.root@ou....
Wed Sep 15 16:28:07 CDT 2010

On Wed, Sep 15, 2010 at 2:54 PM, Charles R Harris <charlesr.harris@gmail.com
> wrote:

> On Wed, Sep 15, 2010 at 1:34 PM, Benjamin Root <ben.root@ou.edu> wrote:
>> Hello,
>> I am trying to solve a problem in matplotlib where I would have an array
>> of floating point numbers and I want to quickly determine what is the
>> closest common offset to a power of 10.  In other words, if given:
>> [12373.43, 12375.89, 12370.18],
>> I would want returned something like either 12370.0, or the lowest common
>> order of magnitude (in this case, 10).
>> Is there some sort of neat math/numpy trick to figure this out?  I already
>> have a brute-force method with a while loop, but I am looking for something
>> a little bit more elegant.
> Something along the lines of
> In [14]: ceil(log10(a.max() - a.min()))
> Out[14]: 1.0
> ? I think this approach can be fixed up for whatever it is. I wasn't clear
> on that.
> Chuck


That does seem to work for most cases (and it even did better than my brute
force approach when it comes to negative numbers).  But there are still some
edge cases.  In particular a case like [0.99, 1.01] will be interpreted as
having a common significant digit.  I suspect another edge case would be if
there are no common sig digs, but I could check for that by seeing if the
order of magnitude of the range is less than the order of magnitude of the
maximum value and if the order of magnitude of the max equals the order of
magnitude of the min.

I will look into it further, but if anyone is interested, I have attached a
test script.

Ben Root
-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://mail.scipy.org/pipermail/numpy-discussion/attachments/20100915/a5ef9228/attachment.html 
-------------- next part --------------
A non-text attachment was scrubbed...
Name: commonsigs.py
Type: application/octet-stream
Size: 1241 bytes
Desc: not available
Url : http://mail.scipy.org/pipermail/numpy-discussion/attachments/20100915/a5ef9228/attachment.obj 

More information about the NumPy-Discussion mailing list