1
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