Hi Elaina,

> Vhel_fdiff3=[]
> for i in xrange(len(Vmatch3_1)):
>     Vhel_fdiff3.append(max([abs(Vmatch3_1[i] - Vmatch3_2[i]),abs(Vmatch3_1[i] 
> - Vmatch3_3[i]),abs(Vmatch3_3[i] - Vmatch3_2[i])]))
>     
> #print Vhel_fdiff3
> #appending writes a list, but numpy which makes the with_ work needs an array 
> Vhel_fdiff3=array(Vhel_fdiff3)

You can skip making the list and directly make a numpy array.

"""
import numpy as np
...
Vhel_fdiff3 = np.zeros_like(Vmatch3_1)
for i in xrange(len(Vmatch3_1):
        Vhel_fdiff3[i] = max(abs(Vmatch3_1[i] - Vmatch3_2[i]),abs(Vmatch3_1[i] 
- Vmatch3_3[i]),abs(Vmatch3_3[i] - Vmatch3_2[i]))
"""

But, more importantly, you can do it all in numpy - have a read about the "max" 
function

http://scipy.org/Numpy_Example_List#head-7918c09eea00e59ec399064e7d5e1e672d242f60

Given an 2-dimensional array, you can find the max for each row or each column 
by specifying which axis you want to compare against.  Almost surely, the built 
in numpy function will be faster than your loop - even if you precompile it by 
importing your functions in another file.  You can do something like

"""
import numpy as np
Vhel_fdiff3 = np.array([abs(Vmatch3_1 - Vmatch3_2), abs(Vmatch3_1 - Vmatch3_3), 
abs(Vmatch3_3 - Vmatch3_2)]) #create an array of the absolute values of the 
differences of each pair of data
# Vhel_fdiff3 is a 2D array
# the first index runs over the three pairs of differences
# the second index runs over the elements of each pair
# to get the maximum difference, you want to compare over the first axis (0)
your_answer = Vhel_fdiff3.max(axis=0)
"""

but you may not want the abs value of the differences, but to actually keep the 
differences, depending on which one has the maximum abs difference - that would 
require a little more coding.


Andre
_______________________________________________
Tutor maillist  -  Tutor@python.org
To unsubscribe or change subscription options:
http://mail.python.org/mailman/listinfo/tutor

Reply via email to