假设我有以下数组,它们分别包含一堆向量的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中的一些易于使用的函数),我将如何编写代码?
答案 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阵列上运行cumsum
。 axis
参数选择在整个展平数组(None
,默认值)或第n轴(行= 0
,列= 1
上运行)
如果你想绘制X-Y坐标,我会用plt.plot(*dat)
这样做,它会将X和Y行解包作为绘图的参数。