x
和y
是50个元素的列表。 SV
是一个包含4个元素的列表。
我想只绘制位置为SV的x,y元素。例如,如果SV=[3,7,10,15]
我只想绘制x[3],x[7],x[10],x[15]
和y[3],y[7],y[10],y[15]
。
因此,列表SV表示我想要绘制的x,y的位置(而不是值)。我试过这样的事情,但我没有成功:
plt.scatter(x[SV],y[SV])
答案 0 :(得分:1)
使用此:
x, y = [x[i] for i in SV], [y[i] for i in SV]
答案 1 :(得分:1)
x
和y
需要是numpy数组,而不是列表,用于"花哨的索引":
In [11]: x = np.arange(100, step=2)
In [12]: x[SV]
Out[12]: array([ 6, 14, 20, 30])
In [13]: list(x)[SV] # doesn't work if a list
---------------------------------------------------------------------------
TypeError Traceback (most recent call last)
<ipython-input-13-7dce2933b313> in <module>()
----> 1 list(x)[SV]
TypeError: list indices must be integers or slices, not list
即。使用np.array构造函数:
x, y = np.array(x), np.array(y)
plt.scatter(x[SV], y[SV])
答案 2 :(得分:0)
这是一个简单的一个班轮:
plt.scatter(*zip(*[(x[i], y[i]) for i in SV]))