gpt4 book ai didi

python - 如何实现 matlab 的 ismember(A, b),A 是一个 numpy ndarray,b 是一个列表

转载 作者:太空宇宙 更新时间:2023-11-04 10:26:38 25 4
gpt4 key购买 nike

<分区>

实现 matlab 的 ismember(A, b) 最有效的方法是什么?在 python 中,其中 A 是任何 numpy ndarray,b 是值列表。它应该返回一个掩码作为与 A 形状相同的 bool ndarray,其中如果 A 中的对应值在 b 中的值列表中,则元素为 True。

我想用列表 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的回答,一种解决方案是:

import numpy as np

def ismember(A, b):
return np.in1d(A, b).reshape(A.shape)

但这很慢,而且内存不足。对于我的情况,A 是一个大到 512 x 512 x 1200 的图像。b 有大约 1000 个元素。

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com