Python 根据两列的值选择numpy ndarray中的行

声明:本页面是StackOverFlow热门问题的中英对照翻译,遵循CC BY-SA 4.0协议,如果您需要使用它,必须同样遵循CC BY-SA许可,注明原文地址和作者信息,同时你必须将它归于原作者(不是我):StackOverFlow 原文地址: http://stackoverflow.com/questions/23359886/
Warning: these are provided under cc-by-sa 4.0 license. You are free to use/share it, But you must attribute it to the original authors (not me): StackOverFlow

提示:将鼠标放在中文语句上可以显示对应的英文。显示中英文
时间:2020-08-19 02:49:37  来源:igfitidea点击:

selecting rows in numpy ndarray based on the value of two columns

pythonnumpymultidimensional-array

提问by user3584444

I have a big np.ndarray (3600000,3), the HUE, the VALUE, and an associated CLASSnumber. For each pairs of HUEand VALUEI would like to find, using this array the corresponding Classnumber. I'm a very beginner in Python and have a hard time doing it. Do you know a way to do it?

我有一个 big np.ndarray (3600000,3)、 the HUE、 theVALUE和一个关联的CLASS数字。对于每个对HUEVALUE我想找到,使用该阵列对应的Class号码。我是 Python 的初学者,很难做到。你知道一种方法吗?

Thank you in advance!

先感谢您!

采纳答案by Kei Minagawa

I assume your array looks like:

我假设你的数组看起来像:

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

And here is the sample code. For simplicity I changed the size 3600000 to 5.

这是示例代码。为简单起见,我将大小 3600000 更改为 5。

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

Now array alook like this:

现在数组a看起来像这样:

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

If you want row with HUE=9, do like this:

如果你想用 排HUE=9,这样做:

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

If you want row with VALUE=4, do like this:

如果你想用 排VALUE=4,这样做:

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

If you want row with HUE=0and VALUE=1, do like this:

如果你想用HUE=0and排VALUE=1,这样做:

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

回答by emeth

Try this code:

试试这个代码:

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

where xis np.ndarray

这里xnp.ndarray

 x[:, 2] == class_number

contains true/falsethat means whether the last is class_numberor not.

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

You need to take a look at: Boolean indexingin http://wiki.scipy.org/Cookbook/Indexing

你需要看看:Boolean indexinghttp://wiki.scipy.org/Cookbook/Indexing

Moved from comment.

从评论中移出。