numpy - 在二维数组中搜索多个元素?
问题描述
我有一个 1d array match和 2d array data。我可以像这样搜索一个或几个元素:
data[data[:,0] == match[0] ]
data[data[:,0] == match[0] & data[:,0] == match[1] ]
但是你如何搜索所有这些:
data[ data[:,0] == match ]
我想我可以在 in1d() 中使用 numba 函数!:
mask = np.zeros(len(ar1), dtype=bool)
for a in ar2:
mask |= (ar1 == a)
return mask
解决方案
您可以使用numpy.isin
:
np.isin(data[:, 0], match)
示例:
data = np.array([[1, 4],[5, 2],[2, 4]])
match = np.array([2, 4])
np.isin(data[:,0], match)
# array([False, False, True])
data[np.isin(data[:, 0], match)]
# array([[2, 4]])
推荐阅读
- git - 我想在本地撤消与 master 的合并,但它给了我一个致命错误
- python - Sympy.solve 返回:“[]”
- types - 从 rescript 中的变体类型访问密钥
- flutter - 颤振类型'_CompactIterable
- >' 不是类型“列表”的子类型
' - arrays - 我在 MongoDB 中收到“未知的顶级操作员错误”
- javascript - Node / Express / Mocha 禁用中间件?
- ubuntu-18.04 - 在 Ubuntu 18.04 中安装时 freeradius 出现错误
- javascript - 通过替换字段名称使用 jquery ajax 发送表单数据
- git - 是否可以使用当前和目标分支提交哈希确定当前分支正在合并到哪个分支中?
- python - 使用带有 django 的 jquery 自动完成来选择一个选项