为了账号安全,请及时绑定邮箱和手机立即绑定

Python:在 Numpy 数组赋值中使用相等运算符

Python:在 Numpy 数组赋值中使用相等运算符

皈依舞 2021-12-29 18:18:04
我在网上的一些例子中看到了这段代码,正在尝试理解和修改它:c = a[b == 1]为什么这样做?b == 1对于b满足等式的每个元素,它似乎返回 true 。我不明白这样的事情如何a[True]最终评估为“对于 a 中相同索引值b等于 1 的所有值,将它们复制到c”a, b, 和c都是包含一些数据的相同长度的 NumPy 数组。我已经搜索了很多,但甚至不知道如何称呼这种东西。如果我想添加第二个条件,例如:c = a[b == 1 and d == 1]我得到ValueError:包含多个元素的数组的真值不明确。使用 a.any() 或 a.all()我知道发生这种情况是因为由于此处解释的原因,相等运算的组合不明确,但我不确定如何仅在一行中添加a.any()或添加a.all()到该表达式中。编辑:对于问题 2,c = a[(b == 1) & (d == 1)]有效。关于我的第一个问题关于如何/为什么工作的任何意见?
查看完整描述

2 回答

?
FFIVE

TA贡献1797条经验 获得超6个赞

为什么您在第 (1) 点中的示例不起作用?这是布尔索引。如果数组的形状不同,则可能是另一回事,但是:

c = a[b == 1]

无法区分:

c = a[a == 1]

当您不知道实际数组时。这里没有任何具体a的事情发生;a == 1只是设置一个布尔掩码,然后您将其重新应用于ain a[mask_here]。生成掩码的原因无关紧要。


查看完整回答
反对 回复 2021-12-29
?
慕勒3428872

TA贡献1848条经验 获得超6个赞

您只需要将条件分别放在括号中。尝试使用这个

c = a[(b == 1) & (d == 1)]


查看完整回答
反对 回复 2021-12-29
  • 2 回答
  • 0 关注
  • 362 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号