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

Mark Lawrence breamoreboy at yahoo.co.uk
Fri Feb 17 04:27:19 CET 2012


On 17/02/2012 02:53, Elaina Ann Hyde wrote:
> 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
>
> _______________________________________________
> Tutor maillist  -  Tutor at python.org
> To unsubscribe or change subscription options:
> http://mail.python.org/mailman/listinfo/tutor

I've found this http://comments.gmane.org/gmane.comp.python.tutor/72882.

HTH.

-- 
Cheers.

Mark Lawrence.



More information about the Tutor mailing list