我有两个数组,它们在一个单独的数组中有2D矢量和类标签。
a = np.random.random_sample((10000,2))
labels = [0]*10000
我像这样使用它们
plot_data(a,np.matrix(np.asarray(labels)))
现在有三个类1,2和3,我打算从' a'中提取行。对应于每个类的向量并绘制它。 我无法完成它。我试过以下但是它没有用。
indices_0 = [k for k in range(0, X.shape[0]) if np.all(y == 1)]
indices_1 = [k for k in range(0, X.shape[0]) if np.all(y == 2)]
indices_2 = [k for k in range(0, X.shape[0]) if np.all(y == 3)]
如何选择行(如matlab中的FIND)?
答案 0 :(得分:0)
您正在寻找的是NumPy的nonzero
方法。
尝试使用:
indices_0 = a[np.nonzero(labels == 0)]
indices_1 = a[np.nonzero(labels == 1)]
indices_2 = a[np.nonzero(labels == 2)]
说明:
labels == 0
为具有指定值的向量True
的每个元素返回False
和labels
数组,np.nonzero(...)
返回索引列表,其中向量具有True
值,indices[...]
返回indices
矩阵的行,这些矩阵按照nonzero
提供的索引进行过滤。顺便说一句:我推荐这个用于Matlab用户的备忘单:https://docs.scipy.org/doc/numpy-dev/user/numpy-for-matlab-users.html