基于两列的值在numpy ndarray中选择行

2024-04-20 13:35:19 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一个很大的np.ndarray (3600000,3),一个HUE,一个VALUE,和一个相关的CLASS数字。对于每对HUEVALUE我想用这个数组找到对应的Class数字。我对Python很熟悉,很难做到。你知道怎么做吗?

提前谢谢你!


Tags: valuenp数字数组hueclassndarray
2条回答

我想你的阵列看起来像:

       |(HUE)(VALUE)(CLASS)
row/col|   0     1     2
-------+-----------------
0      |   0     1     2
1      |   3     4     5
2      |   6     7     8
.      |   .     .     .
.      |   .     .     .
3599999|   .     .     .

这是示例代码。为了简单起见,我把3600000号改成了5号。

a = np.array(xrange(5 * 3))
a.shape = (5, 3)

现在数组a如下所示:

array([[ 0,  1,  2],
       [ 3,  4,  5],
       [ 6,  7,  8],
       [ 9, 10, 11],
       [12, 13, 14]])

如果要使用HUE=9进行行,请执行以下操作:

a[np.where(a[:,0] == 9)]
#array([[ 9, 10, 11]])

如果要使用VALUE=4进行行,请执行以下操作:

a[np.where(a[:,1] == 4)]
#array([[3, 4, 5]])

如果要使用HUE=0VALUE=1行,请执行以下操作:

a[np.where((a[:,0] == 0) * (a[:,1] == 1))]
#array([[0, 1, 2]])

请尝试以下代码:

 x[x[:, 2] == class_number[:, :2]

其中xnp.ndarray

 x[:, 2] == class_number

包含true/false,这意味着最后一个是否是class_number

你需要看看:http://wiki.scipy.org/Cookbook/Indexing中的Boolean indexing

从评论移动。

相关问题 更多 >