python - 对 numpy 数组有多个相等条件

标签 python arrays numpy matrix conditional-statements

假设我有一个大型二维 numpy 数组(称之为 A),其中包含从 0 到 9 的整数。

我正在尝试编写一个函数,该函数返回一个与具有以下特征的 A 形状相同的二进制 numpy 数组(称为 B)。

如果 A 中的相应元素出现在给定列表 L 中,则 B 中的条目为 1;否则,条目为零。

下面显示了执行此操作可能不是最有效的代码。

A = np.random.randint(0, 10, (5, 5))
L = [3,4,5]

B = np.zeros(A.shape)
for e in L:
    B[A==e] = 1

有没有更快的方法?

谢谢!

最佳答案

看来我有责任指出显而易见的事实:

def AinL(A, L):
    B = np.zeros((10,), int)
    B[L] = 1
    return B[A]

基准:

 10x10 #L=3
orig     0.6665631101932377
HAL      0.4370500799268484
Psidom   1.13961720908992
PP       0.23527960386127234

 100x100 #L=3
orig     0.3015591569710523
HAL      0.29902734607458115
Psidom   0.4470538650639355
PP       0.18963343487121165

 1000x1000 #L=4
orig     0.5516874771565199
HAL      0.5967503408901393
Psidom   0.6331975681241602
PP       0.23225238709710538

 10000x1000 #L=2
orig     0.8539429588709027
HAL      0.9840140701271594
Psidom   1.0392512339167297
PP       0.7203555379528552

关于python - 对 numpy 数组有多个相等条件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42287162/

相关文章:

python - 一个对象的 Unicode 表示回到一个对象(在 python 中)

python - apache2用什么权限/用户写django日志

python - python中的矩阵乘法导致类型错误

css - Numpy:按索引对 Matrix 的元素进行排序

python - 如何输入 float 和/或整数的numpy数组

Python/MySQL - 通过 Tkinter 将数据插入表中

python - Django 不提供基于 ImageField 的图像

python - Numpy:如何按整数值缩放整数数组?

arrays - 如何为固定大小的 char 数组创建类型别名?

java - 如何对数组的间隔求和?