首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何对numpy数组进行二进制化以指示每一行的最大值?

如何对numpy数组进行二进制化以指示每一行的最大值?
EN

Stack Overflow用户
提问于 2022-02-12 02:42:43
回答 2查看 122关注 0票数 1

如果我有一个numpy数组,我如何转换使每个元素的值为零,除了每个行的max元素(应该是1 )之外,没有一个强力的循环解决方案?例如,考虑到:

代码语言:javascript
复制
array([[1, 2, 3, 4],
       [2, 3, 4, 1],
       [3, 4, 1, 2],
       [4, 1, 2, 3]])

我如何制作:

代码语言:javascript
复制
array([[0,0,0,1],
       [0,0,1,0],
       [0,1,0,0],
       [1,0,0,0]])

注意:对于我的实际情况,我不知道数组中的实际值。我只知道这些值是非负的。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2022-02-12 02:52:46

您可以使用.max(),然后使用.astype()将生成的布尔矩阵转换为二进制矩阵。

代码语言:javascript
复制
import numpy as np

arr = np.array([[1, 2, 3, 4],
[2, 3, 4, 1],
[3, 4, 1, 2],
[4, 1, 2, 3]])

result = (arr == arr.max()).astype(int)

print(result)
票数 1
EN

Stack Overflow用户

发布于 2022-02-12 02:50:56

尝试以下代码:

代码语言:javascript
复制
import numpy as np
ar = np.array([[1, 2, 3, 4],
               [2, 3, 4, 1],
               [3, 4, 1, 2],
               [4, 1, 2, 3]])
ar = (ar == ar.max()) * 1
print(ar)
票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/71088565

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档