首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Numpy比较不相等的行并使两个数组具有相同的维数

Numpy比较不相等的行并使两个数组具有相同的维数
EN

Stack Overflow用户
提问于 2015-07-22 15:42:03
回答 3查看 413关注 0票数 2
代码语言:javascript
复制
a=   
[[43655,    1428,     0, 2554]      
[44580,  1428,     0,  2555]  
[44930,  1428,     0,  2556]  
[47708,  1428,     0,  2557]]     
b=   
[[41641,  1428,     0, 2554]  
[44075,  1428,     0,  2555]  
[44901,  1428,     1,  2556]  
[45377,  1428,     0,  2557]  
[48056,  1428,     0,  2558]]


New  b= 
[[41641,  1428,     0, 2554]  
[44075,  1428,     0,  2555]  
[44901,  1428,     1,  2556]  
[45377,  1428,     0,  2557]  

我有两个不相等行的numpy数组。就像。数组a有4行,而数组b有5行。

编辑:没有。数组中的行'b‘大于数组'a’。a:,3的每个元素都位于b:,3中。是否有任何函数只提取其b:,3=a:,3的数组b的行?

EN

Stack Overflow用户

回答已采纳

发布于 2015-07-23 06:20:06

您可以在列表理解中使用zipnp.equal比较第三列的元素,然后将结果转换为numpy数组,并从b数组中获取所需的行。

代码语言:javascript
复制
>>> b[np.array([np.equal(*I) for I in zip(a[:,3],b[:,3])])]
array([[41641,  1428,     0,  2554],
       [44075,  1428,     0,  2555],
       [44901,  1428,     1,  2556],
       [45377,  1428,     0,  2557]])

如果订单对您不重要,可以使用np.in1d

代码语言:javascript
复制
>>> b[np.in1d(b[:,3],a[:,3])]
array([[41641,  1428,     0,  2554],
       [44075,  1428,     0,  2555],
       [44901,  1428,     1,  2556],
       [45377,  1428,     0,  2557]])

>>> a=np.array([[100, 1], [101, 4], [106, 6], [104, 10]])
>>> b= np.array([[ 1, 1], [ 2, 2], [ 3, 3], [ 4, 4], [ 5, 5], [ 6, 6], [ 7, 7], [ 8, 8], [ 9, 9], [10, 10]])
>>> 
>>> b[np.in1d(b[:,1],a[:,1])]
array([[ 1,  1],
       [ 4,  4],
       [ 6,  6],
       [10, 10]])
票数 1
EN
查看全部 3 条回答
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/31567882

复制
相关文章

相似问题

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