首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Numpy在2d数组行中查找一维数组元素

Numpy在2d数组行中查找一维数组元素
EN

Stack Overflow用户
提问于 2017-05-25 01:42:06
回答 1查看 759关注 0票数 1

我希望在2d数组的行中找到一维数组的元素。

示例

代码语言:javascript
复制
In [1]: import numpy as np

In [2]: a = np.array([7,7,7])

In [3]: a
Out[3]: array([7, 7, 7])

In [4]: b = np.arange(15).reshape(3,5)

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

b的第0行和第2行与a的对应元素没有匹配,但是第1行的位置2匹配。预期输出:

代码语言:javascript
复制
array([nan, 2, nan])

如果给定行中有多个匹配,则应使用第一个匹配的位置。

我可以使用普通的python循环来研出一个解决方案,但我感兴趣的是一种将其向量化的方法。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2017-05-25 02:04:11

比较b和a元素,然后为每一行查找第一个True值索引,如果所有为False,则设置为nan。

代码语言:javascript
复制
np.where(np.sum(b==a[:,None],1) > 0, np.argmax(b==a[:,None],1), np.nan)
Out[22]: array([ nan,   2.,  nan])
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/44170976

复制
相关文章

相似问题

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