首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >根据多列的条件选择行

根据多列的条件选择行
EN

Stack Overflow用户
提问于 2015-07-12 20:48:29
回答 5查看 1.2K关注 0票数 2

我有一个数组,我想使用NumPy选择在这些行的不同列上有一些条件的行。例如,考虑以下数组:

代码语言:javascript
复制
test_array = numpy.array(([1,2,3,5],[4,5,6,7],[7,8,9,4]))

现在,我需要所有行,其中第1列是1,第4列是5。因此,输出应该是[1,2,3,5],在本例中只有1行。

EN

回答 5

Stack Overflow用户

回答已采纳

发布于 2015-07-12 21:15:41

您可以使用以下方法:

代码语言:javascript
复制
>>> test_array[np.where(np.all(test_array[:,[0,3]]==[1,5],axis=1))]
array([[1, 2, 3, 5]])
票数 0
EN

Stack Overflow用户

发布于 2015-07-12 21:10:12

代码语言:javascript
复制
[list(x) for x in test_array if x[0]==1 and x[3]==5]

这将为您提供所需的输出:

代码语言:javascript
复制
[[1, 2, 3, 5]]

像这样的数组

代码语言:javascript
复制
test_array=numpy.array(([1,2,3,5],[4,5,6,7],[7,8,9,4],[1,98,76,5]))

然后你会得到

代码语言:javascript
复制
[[1, 2, 3, 5], [1, 98, 76, 5]]

假设您调用结果res,您可以轻松地访问结果。这样,res[1]就是[1, 98, 76, 5]

如果--不管出于什么原因--你想得到1和5之间的两个数字。

代码语言:javascript
复制
[sl[1:3] for sl in res]

这会让你

代码语言:javascript
复制
[[2, 3], [98, 76]]

这就是你要找的吗?

票数 1
EN

Stack Overflow用户

发布于 2015-07-12 21:16:10

布尔索引/掩蔽很好地完成了这项工作。

代码语言:javascript
复制
In [498]: test_array=np.array(([1,2,3,5],[4,5,6,7],[7,8,9,4]))

In [499]: I = (test_array[:,0]==1) & (test_array[:,3]==5)

In [500]: I
Out[500]: array([ True, False, False], dtype=bool)

In [501]: test_array[I,:]
Out[501]: array([[1, 2, 3, 5]])

在计算I时,可以自由地使用(),这样==测试就比&具有优先权。Kasra的测试也会起作用:I = np.all(test_array[:,[0,3]]==[1,5],axis=1)

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/31372429

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档