通过一行的信息过滤numpy数组

时间:2016-10-03 06:56:48

标签: python arrays numpy filter

我正在寻求有关过滤numpy数组的帮助。我目前有一个numpy数组,其中包含以下信息:

[[x1_1, x1_2, ..., x1_n], [x2_1, x2_2, ..., x2_n], [y1, y2, ..., yn]

即。数组本质上是一个数据集,其中 x1,x2 是要素(坐标),y是输出(值)。每个数据点都有一个适当的 x1,x2 y ,因此,例如,与数据点 i 对应的信息是 x1_i ,x2_i yi

现在,我想通过y过滤来提取所有数据点,这意味着我想知道所有数据点,其中y>一些价值。在我的情况下,我想要所有情况下的信息(仍然具有相同的numpy结构),其中y> 0.我真的不知道该怎么做 - 我一直在玩布尔索引,例如d[0:2,y>0]d[d[2]>0],但没有得到任何地方。

一个澄清的例子:

给定数据集:

d = [[0.1, 0.2, 0.3], [-0.1,-0.2,-0.3], [1,1,-1]]

我将所有点或实例拉到y > 0,即。 d[2] > 0,它应返回值:

[[0.1, 0.2],[-0.1,-0.2],[1,1]]

任何建议或帮助都将不胜感激。

1 个答案:

答案 0 :(得分:3)

您可以使用:

import numpy as np

d = np.array([[0.1, 0.2, 0.3], [-0.1,-0.2,-0.3], [1,1,-1]])
print (d)
[[ 0.1  0.2  0.3]
 [-0.1 -0.2 -0.3]
 [ 1.   1.  -1. ]]

#select last row by d[-1] 
print (d[-1]>0)
[ True  True False]

print (d[:,d[-1]>0])
[[ 0.1  0.2]
 [-0.1 -0.2]
 [ 1.   1. ]]