绘图矢量添加

时间:2014-10-15 06:31:27

标签: python

假设我有以下数组,它们分别包含一堆向量的X和Y值:

xdat = np.array([3,2,7,4])
ydat = np.array([2,4,4,9])

让我们说我想绘制这些向量的总和(a + b + c + d),不仅是来自原点的单行,而是从每个单独向量的总和中依次绘制。

我该怎么做?

我的想法是使用plt.plot作为两个新数组的值,这些数组包含所有向量的每个起点/终点的X和Y坐标。具体坐标将从xdat和ydat计算得出。假设这是最有效的方法(不使用已经内置到python中的一些易于使用的函数),我将如何编写代码?

1 个答案:

答案 0 :(得分:1)

听起来你想要numpy.cumsum

import numpy as np

xdat = np.array([3,2,7,4])
ydat = np.array([2,4,4,9])

dat = np.vstack((xdat, ydat))
# array([[3, 2, 7, 4],
#        [2, 4, 4, 9]])

dat = np.cumsum(dat, axis=1)
# array([[ 3,  5, 12, 16],
#        [ 2,  6, 10, 19]], dtype=int32)

# optionally start at 0, 0 (can do this before or after cumsum)
dat = np.hstack([np.zeros((2, 1)), dat])
# array([[  0.,   3.,   5.,  12.,  16.],
#        [  0.,   2.,   6.,  10.,  19.]])

为方便起见,我将它们叠加起来,但您也可以在1-D阵列上运行cumsumaxis参数选择在整个展平数组(None,默认值)或第n轴(行= 0,列= 1上运行)

如果你想绘制X-Y坐标,我会用plt.plot(*dat)这样做,它会将X和Y行解包作为绘图的参数。