在python中实现matlab的ismember(A, b)最有效的方法是什么,其中A是任何numpy ndarray,b是一个值列表。如果a中的对应值在b的值列表中,则它应该返回一个与元素where形状相同的boolean ndarray
我想用列表B中的值替换A的所有元素。
我希望A[A in B] = 0
正常工作,但它抛出以下错误:
ValueError: The truth value of an array with more than one element is ambiguous. Use a.any() or a.all()
如果存在ismember
的等效实现,则以下操作将满足我的需要:
A[ismember(A, b)] = 0
注意:我不希望解决方案涉及在python中遍历A的所有元素。
根据ajcr的答案,一个解决方案是:
^{pr2}$但这是相当缓慢和耗尽内存。对于我的例子,A是一个大到512 x 512 x 1200的图像。b有大约1000个元素。
您可能正在寻找^{} :
注意,对于多维数组
^{pr2}$A
,输入被展平,因此您需要重塑布尔数组:相关问题 更多 >
编程相关推荐