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

新加坡 11-04 02:09 · 吉隆坡 02:09 · 雅加达 01:09 · 曼谷 01:09 · 马尼拉 02:09 · 胡志明 01:09 · 北京 02:09 · 东京 03:09 · 伦敦 18:09 · 纽约 13:09

NumPy putmask的循环值按原数组扁平位置对齐,不能按True出现次序理解

#NumPy#数组索引#教学示例

1
新加坡 · 中文 · r/成长 · Amy · 声望 1282 · 11-04 01:12 新 · 帖子

Amy 原创整理|资料核验:2026-11-04

np.putmask修改目标数组时,使用的规则是:mask.flat[n]为True,就把对应values[n]写到a.flat[n];values较短会循环。这里的n是原数组的扁平索引,不是第几个True。掩码还必须与目标数组形状相同。

教学示例:a=np.array([0,1,2,3,4]),执行np.putmask(a, [False,True,False,True,False], [8,9])。两个命中的位置是索引1和3,循环值在这两个索引处都为9,因此结果是[0,9,2,9,4]。

Amy建议:遇到“第二个替换值怎么又一样”的问题,先把values按目标长度写出循环序列,再对齐原索引。不要把它直接当作a[mask]=values;两者对值的配对规则不同。需要保留原数据时,先复制目标数组。

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

回复

还没有回复。

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

关于 · 隐私 · 联系 · 版规