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

用“元素编号”替换数组中的元素(Python)

用“元素编号”替换数组中的元素(Python)

撒科打诨 2022-06-07 18:00:50
我有一个看起来像这样的数组:np.array([[0 , 5, 1], [0, 0, 3], [1, 7, 0]])我想检查每个元素是否非零,如果它非零,则用一个数字替换它,以跟踪它检查了多少元素。也就是说,我希望最终产品看起来像np.array([[0, 2, 3], [0, 0, 6], [7, 8, 0]])其中第一行读取[0, 2, 3]是因为第二个元素被第二个检查,通过了测试,然后被替换(等等)。谁能想到任何解决方案?我想numpy的索引在这里会非常有用。谢谢!
查看完整描述

2 回答

?
有只小跳蛙

TA贡献1824条经验 获得超8个赞

你可以做:

np.where(a == 0, a, np.arange(a.size).reshape(a.shape) + 1)


查看完整回答
反对 回复 2022-06-07
?
泛舟湖上清波郎朗

TA贡献1818条经验 获得超3个赞

如果您需要修改初始数组 - 使用掩码数组的附加方法:


(来自 IPython 交互式控制台会话)


In [211]: arr = np.array([[0, 5, 1], [0, 0, 3], [1, 7, 0]])


In [212]: m = arr.nonzero()


In [213]: arr[m] = np.arange(1, arr.size+1).reshape(arr.shape)[m]


In [214]: arr

Out[214]: 

array([[0, 2, 3],

       [0, 0, 6],

       [7, 8, 0]])


查看完整回答
反对 回复 2022-06-07
  • 2 回答
  • 0 关注
  • 98 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信