具有逻辑索引的散点图

时间:2018-08-08 17:40:48

标签: python indexing list-comprehension

我有一个100x2的数组D和一个100x1的数组c(条目为+/- 1),我试图绘制D中对应于c = 1的列的散点图。

我尝试了类似的操作:plt.scatter(D[0][c==1],D[1][c==1]),但它抛出了IndexError: too many indices for array

我知道我已经使用列表理解或类似的东西。我对Python相当陌生,因此在格式方面苦苦挣扎。

非常感谢。

2 个答案:

答案 0 :(得分:1)

概念

您可以使用 $('.btn-a').each(function () { $(this).click(function () { var $this = $(this).val(); if ($this == 'First') { $(this).val('One'); } else if ($this == 'Second') { $(this).val('Two'); } }) }); }); np.where中选择数组D1的行:

C

使用D = np.array([[0.25, 0.25], [0.75, 0.75]]) C = np.array([1, 0]) ,我们只能选择np.where1的行:

C

示例 根据您的实际数据:

>>> D[np.where(C==1)]
array([[0.25, 0.25]])

输出:

enter image description here

答案 1 :(得分:0)

您可以为此使用numpy(假设您有两个numpy数组,否则可以将它们转换为numpy数组):

import numpy as np

c_ones = np.where(c == 1) # Finds all indices where c == 1
d_0 = D[0][c_ones]
d_1 = D[1][c_ones]

然后您可以正常绘制d_0,d_1。

要在需要时转换列表,

C_np = np.asarray(c)
D_np = np.asarray(D)

然后在C_np上执行np.where,如上所示。

这可以解决您的问题吗?