如果我有一个numpy数组,我如何转换使每个元素的值为零,除了每个行的max元素(应该是1 )之外,没有一个强力的循环解决方案?例如,考虑到:
array([[1, 2, 3, 4],
[2, 3, 4, 1],
[3, 4, 1, 2],
[4, 1, 2, 3]])我如何制作:
array([[0,0,0,1],
[0,0,1,0],
[0,1,0,0],
[1,0,0,0]])注意:对于我的实际情况,我不知道数组中的实际值。我只知道这些值是非负的。
发布于 2022-02-12 02:52:46
您可以使用.max(),然后使用.astype()将生成的布尔矩阵转换为二进制矩阵。
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)发布于 2022-02-12 02:50:56
尝试以下代码:
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)https://stackoverflow.com/questions/71088565
复制相似问题