穿过Numpy的2D线?

时间:2013-11-15 18:59:18

标签: python arrays numpy

我试图在Numpy中进行linear combination以获得两点之间的向量遍历,但我正在做的方式非常可怕。

import numpy as np
a=np.array([1,2])
b=np.array([3,4])
t=np.linspace(0,1,4)
c=(np.asarray([t*a[0],t*a[1]])+np.asarray([(1-t)*b[0],(1-t)*b[1]])).T
print c

输出

[[ 3.          4.        ]
 [ 2.33333333  3.33333333]
 [ 1.66666667  2.66666667]
 [ 1.          2.        ]]

有没有更好的方法(当然有效)?

1 个答案:

答案 0 :(得分:5)

如果您将一个尺寸的尺寸添加到t阵列的末尾,则广播会处理细节:

>>> a=np.array([1,2])
>>> b=np.array([3,4])
>>> t=np.linspace(0,1,4)
>>> t[..., None] * a  + (1 - t[..., None]) * b
array([[ 3.        ,  4.        ],
       [ 2.33333333,  3.33333333],
       [ 1.66666667,  2.66666667],
       [ 1.        ,  2.        ]])