首页 > 解决方案 > 根据来自不同数组的值对 NumPy 数组进行调节

问题描述

假设我有两个(样本)数组,方式如下:

a = np.array([4, 5,-1, 2, -3, 3, -4])
b = np.array([0, 1, 0, 0, 1, 1, 0])

现在,我想计算(a > 0 和 b == 0)以及(a < 0 和 b == 1)的出现次数。如何根据两个不同数组的值调整数组?如果我试试这个:

a[a < 0 and b == 1]

我得到错误:

ValueError: The truth value of an array with more than one element is ambiguous. Use a.any() or a.all()

我可以使用循环来做到这一点,但我想避免它,看看是否有更好的方法来做到这一点。

标签: pythonnumpy

解决方案


可以使用按位与运算符&。注意将表达式括在括号中,因为&绑定更紧密

a[(a < 0) & (b == 1)]

可以通过numpy.logical_and.

mask = np.logical_and(a < 0, b == 1)
a[mask]

推荐阅读