Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Python linspace limits from two arrays

I have two arrays:

a=np.array((1,2,3,4,5))
b=np.array((2,3,4,5,6))

What I want is to use the values of a and b for the limits of linspace e.g.

c=np.linspace(a,b,11)

I get an error when I use this code. The answer should be for the first element of the array:

c=np.linspace(a,b,11)
print c
c=[1 1.1 1.2 1.3 1.4 1.5 1.6 1.7 1.8 1.9 2]
like image 515
Jay Avatar asked Jun 02 '13 20:06

Jay


2 Answers

If you want to avoid explicit Python loops, you can do the following:

>>> a = np.array([1, 2, 3, 4, 5]).reshape(-1, 1)
>>> b = np.array([2, 3, 4, 5, 6]).reshape(-1, 1)
>>> c = np.linspace(0, 1, 11)
>>> a + (b - a) * c
array([[ 1. ,  1.1,  1.2,  1.3,  1.4,  1.5,  1.6,  1.7,  1.8,  1.9,  2. ],
       [ 2. ,  2.1,  2.2,  2.3,  2.4,  2.5,  2.6,  2.7,  2.8,  2.9,  3. ],
       [ 3. ,  3.1,  3.2,  3.3,  3.4,  3.5,  3.6,  3.7,  3.8,  3.9,  4. ],
       [ 4. ,  4.1,  4.2,  4.3,  4.4,  4.5,  4.6,  4.7,  4.8,  4.9,  5. ],
       [ 5. ,  5.1,  5.2,  5.3,  5.4,  5.5,  5.6,  5.7,  5.8,  5.9,  6. ]])
like image 151
Sven Marnach Avatar answered Sep 21 '22 06:09

Sven Marnach


You can do this:

c = np.array([np.linspace(i,j,5) for i,j in zip(a,b)])

#array([[ 1.  ,  1.25,  1.5 ,  1.75,  2.  ],
#       [ 2.  ,  2.25,  2.5 ,  2.75,  3.  ],
#       [ 3.  ,  3.25,  3.5 ,  3.75,  4.  ],
#       [ 4.  ,  4.25,  4.5 ,  4.75,  5.  ],
#       [ 5.  ,  5.25,  5.5 ,  5.75,  6.  ]])
like image 23
Saullo G. P. Castro Avatar answered Sep 22 '22 06:09

Saullo G. P. Castro