[Tutor] finding a maximum between the absolute difference of several columns

Elaina Ann Hyde elainahyde at gmail.com
Fri Feb 17 03:53:57 CET 2012


On Fri, Feb 17, 2012 at 1:41 PM, Rohan Sachdeva <rsachdev at usc.edu> wrote:

> The way I would do this is to put all of the differences in a list then
> take the maximum of the list. So..
>
> a = Vmatch3_1 - Vmatch3_2
> b = Vmatch3_1 - Vmatch3_3
> c = Vmatch3_3 - Vmatch3_2
>
> Vhel_fdiff3=max([a,b,c])
>
> That should work. a,b,c are pretty bad variable names...
>
> Rohan
>
> On Thu, Feb 16, 2012 at 5:04 PM, Elaina Ann Hyde <elainahyde at gmail.com>wrote:
>
>> Hello all,
>>    I am still scripting away and have reached my next quandry, this one
>> is much simpler than the last, basically I read in a file with several
>> columns.
>> Vmatch3_1=dat[col1]
>> Vmatch3_2=dat[col2]
>> Vmatch3_3=dat[col3]
>> Vdav=5.0
>> Vhel_fdiff3=max(abs(Vmatch3_1 - Vmatch3_2),abs(Vmatch3_1 -
>> Vmatch3_3),abs(Vmatch3_3 - Vmatch3_2))
>> ----------------
>> What I would like this to return is the maximum difference in each case,
>> so I end up with one column which contains only the largest differences.
>> now I use this to write the condition:
>>
>> with_v1_3=(Vhel_fdiff3 >= Vdav)
>>
>> I know the condition works and plots if
>>
>>  Vhel_fdiff3=(Vmatch3_1 - Vmatch3_2)
>>
>> for example, and I know this syntax would work if it was numbers instead
>> of columns.
>> >>max(abs(1-2),abs(3-7),abs(2-4))
>> >>4
>>
>> The error is:
>> -----------------------
>> Traceback (most recent call last):
>>   File "double_plot.py", line 109, in <module>
>>     Vhel_fdiff3=max(abs(Vmatch3_1 - Vmatch3_2),abs(Vmatch3_1 -
>> Vmatch3_3),abs(Vmatch3_3 - Vmatch3_2))
>> ValueError: The truth value of an array with more than one element is
>> ambiguous. Use a.any() or a.all()
>> -----------------
>> So it can't handle the fact that it's columns of numbers and not single
>> numbers, so my question is, can I solve this without doing a loop around
>> it... use numpy, or some other function instead?
>> I've been searching around and haven't found any good ways forward so I
>> thought one of you might know.  Thanks
>> ~Elaina
>>
>> --
>> PhD Candidate
>> Department of Physics and Astronomy
>> Faculty of Science
>> Macquarie University
>> North Ryde, NSW 2109, Australia
>>
>> _______________________________________________
>> Tutor maillist  -  Tutor at python.org
>> To unsubscribe or change subscription options:
>> http://mail.python.org/mailman/listinfo/tutor
>>
>>
>

------------------
Thanks for the replies so far.  I don't think that Rohan's idea solves the
numbers versus columns issue.  If I run it I get
-------------------
Traceback (most recent call last):
  File "double_plot.py", line 112, in <module>
    Vhel_fdiff3=max(a,b,c)
ValueError: The truth value of an array with more than one element is
ambiguous. Use a.any() or a.all()
---------------------
which is just the same error, I looked at the forums and the link suggested
and I guess maybe my problem is trickier than I first thought!
~Elaina

-- 
PhD Candidate
Department of Physics and Astronomy
Faculty of Science
Macquarie University
North Ryde, NSW 2109, Australia
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://mail.python.org/pipermail/tutor/attachments/20120217/2941f981/attachment.html>


More information about the Tutor mailing list