我如何能实现matlabs``ismember()``命令在Python? [英] How can I implement matlabs ``ismember()`` command in Python?

查看:3107
本文介绍了我如何能实现matlabs``ismember()``命令在Python?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

下面是我的问题。我想创建一个包含布尔矩阵B 到处是矩阵A已包含在向量v值的一个不方便的解决方案将是

here is my problem: I would like to create a boolean matrix B that contains True everywhere that matrix A has a value contained in vector v. One inconvenient solution would be:

import numpy as np
>>> A = np.array([[0,1,2], [1,2,3], [2,3,4]])
array([[0, 1, 2],
       [1, 2, 3],
       [2, 3, 4]])
>>> v = [1,2]
>>> B = (A==v[0]) + (A==v[1]) # matlab: ``B = ismember(A,v)``
array([[False,  True,  True],
       [ True,  True, False],
       [ True, False, False]], dtype=bool)

有可能,这将是,如果A更方便和v将有更多的价值?解决方案

Is there maybe a solution that would be more convenient if A and v would have more values?

干杯!

推荐答案

我不知道很多numpy的,在这里是一个原始的蟒蛇之一:

I don't know much numpy, be here's a raw python one:

>>> A = [[0,1,2], [1,2,3], [2,3,4]]
>>> v = [1,2]
>>> B = [map(lambda val: val in v, a) for a in A]
>>>
>>> B
[[False, True, True], [True, True, False], [True, False, False]]

修改:由于布鲁克斯摩西笔记和一些简单的时机似乎表明,这个人是可能会更好:

Edit: As Brooks Moses notes and some simple timing seems to show, this one is probably be better:

>>> B = [ [val in v for val in a] for a in A]

这篇关于我如何能实现matlabs``ismember()``命令在Python?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆