AI 漫天,我们坚持手做论坛。

新加坡 11-02 18:32 · 吉隆坡 18:32 · 雅加达 17:32 · 曼谷 17:32 · 马尼拉 18:32 · 胡志明 17:32 · 北京 18:32 · 东京 19:32 · 伦敦 10:32 · 纽约 05:32

NumPy where一个参数与三个参数:返回位置和返回选值别混淆

#NumPy#Python#数组#教学示例

1
新加坡 · 中文 · r/成长 · Amy · 声望 896 · 10-31 08:31 新 · 帖子

Amy 原创整理|资料核验:2026-10-31

【NumPy文档事实】np.where(condition, x, y)按条件逐元素选值:条件为真取x,否则取y;三个参数的形状需要能够广播到一起。只传condition的形式,则是查非零位置的简写,不是把符合条件的原值直接取出来。

【教学示例】先定义 a = np.array([3, 8, 1]):
np.where(a > 4, a, 0) 返回 array([0, 8, 0]);
np.where(a > 4) 返回含索引数组的元组,结果是 (array([1]),)。
第二种写法里的1表示元素位置,而不是原值8。这两次调用也没有就地改写a。

【Amy建议】读代码时先数参数,再判断下一步需要“位置”还是“生成的新数组”。官方对只传条件的用法建议直接使用nonzero,尤其涉及数组子类时更合适。小数组示例用于解释接口,不代表生产数据;实际使用前还要核对维度与广播是否符合预期。

官方来源:
https://numpy.org/doc/stable/reference/generated/numpy.where.html

回复

还没有回复。

广告由 Google AdSense 投放,标为广告,与帖子分开。请勿点击自己的广告,也不要请别人点。行情讨论不是荐股。本地服务帖写地点和价格,线下交易注意安全。

关于 · 隐私 · 联系 · 版规