如何用matlab来实现mparab

2024-09-28 20:20:46 发布

您现在位置:Python中文网/ 问答频道 /正文

在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个元素。


Tags: the方法innumpy元素列表错误解决方案
1条回答
网友
1楼 · 发布于 2024-09-28 20:20:46

您可能正在寻找^{}

>>> A = np.arange(9)
>>> B = [4, 6, 7]
>>> np.in1d(A, B)
array([False, False, False, False,  True, False,  True,  True, False])

注意,对于多维数组A,输入被展平,因此您需要重塑布尔数组:

^{pr2}$

相关问题 更多 >