5

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]
Saullo G. P. Castro
  • 56,802
  • 26
  • 179
  • 234
Jay
  • 291
  • 1
  • 6
  • 19

3 Answers3

12

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. ]])
Sven Marnach
  • 574,206
  • 118
  • 941
  • 841
8

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.  ]])
Saullo G. P. Castro
  • 56,802
  • 26
  • 179
  • 234
0

Just use the first element than:

a = np.array((1, 2, 3, 4, 5))
b = np.array((2, 3, 4, 5, 6))
np.linspace(a[0], b[0], 11)

Result:

array([ 1. ,  1.1,  1.2,  1.3,  1.4,  1.5,  1.6,  1.7,  1.8,  1.9,  2. ])

EDIT

Just saw the comment. The OP wants a 2d array:

np.array([np.linspace(x, y, 11) for x, y in zip(a, b)])

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. ]])
Mike Müller
  • 82,630
  • 20
  • 166
  • 161