python - 根据来自不同数组的值对 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()
我可以使用循环来做到这一点,但我想避免它,看看是否有更好的方法来做到这一点。
解决方案
可以使用按位与运算符&
。注意将表达式括在括号中,因为&
绑定更紧密
a[(a < 0) & (b == 1)]
可以通过numpy.logical_and
.
mask = np.logical_and(a < 0, b == 1)
a[mask]
推荐阅读
- javascript - 我可以通过引用编辑 vue 数据吗?
- c++ - 如何从 MFC DoModal 对话框中获取尺寸?
- c# - 如何根据其他组合框中的选择过滤组合框?
- python - 如何打开 .exe(不是 windows 命令行)文件并向其发送命令?
- c# - 如何从主页调用 UserControl 设计器文件中的函数到例如 MouseDown 事件
- javascript - 将消息发送到多个 Service Bus 主题,然后将其发送到 cosmos db
- html - 如何制作无法滚动的页面?
- node.js - 获取页面时无法获得快速路由器工作接收错误
- r - 如何确定用于拟合弹性网的 train 函数的 tuneLength
- javascript - AudioContext.decodeAudioData 似乎会产生噼啪声