将numpy数组中的值转换为0或1的Python方式
我有一个numpy数组(10,1)。我希望将此数组中的值替换为具有最高值的单元格的1或所有其他项的0。请问最简单的肾盂方法是什么将numpy数组中的值转换为0或1的Python方式,python,numpy,Python,Numpy,我有一个numpy数组(10,1)。我希望将此数组中的值替换为具有最高值的单元格的1或所有其他项的0。请问最简单的肾盂方法是什么 test_array= [[0.24330683] [0.40597628] [0.33086422] [0.19425666] [0.32084166] [0.30551688] [0.14800594] [0.18241316] [0.14760117] [0.31546239]] 不确定是否大多数蟒蛇,但您可以: (test_array ==
test_array= [[0.24330683]
[0.40597628]
[0.33086422]
[0.19425666]
[0.32084166]
[0.30551688]
[0.14800594]
[0.18241316]
[0.14760117]
[0.31546239]]
不确定是否大多数蟒蛇,但您可以:
(test_array == max(test_array)) * 1
不确定是否大多数蟒蛇,但您可以:
(test_array == max(test_array)) * 1
我想下面这样的方法会管用的
test_array_ranking = []
For num in test_array:
if num == max(test_array):
test_array_ranking.append(1)
else:
test_array_ranking.append(0)
print(test_array_ranking)
我还没有机会测试这种精确的编码,但这是我要走的路(很抱歉,我的帖子没有明确编码语法)。我认为下面的方法可以奏效
test_array_ranking = []
For num in test_array:
if num == max(test_array):
test_array_ranking.append(1)
else:
test_array_ranking.append(0)
print(test_array_ranking)
我还没有机会测试这个精确的编码,但这是我要走的路(很抱歉,我的帖子没有明确编码语法)。我确信这已经得到了回答,但我偏爱numpy
import numpy as np
array = np.random.rand(10, 1)
np.where(array == array.max(), 1, 0)
排列
阈值后的数组:
Out[47]:
array([[0],
[0],
[0],
[0],
[0],
[0],
[0],
[0],
[1],
[0]])
我相信这已经得到了回答,但我偏爱numpy
import numpy as np
array = np.random.rand(10, 1)
np.where(array == array.max(), 1, 0)
排列
阈值后的数组:
Out[47]:
array([[0],
[0],
[0],
[0],
[0],
[0],
[0],
[0],
[1],
[0]])
此解决方案使用遮罩将最大值设置为1,其他所有值设置为0
将numpy导入为np
arr=np.array(
[
[0.24330683],
[0.40597628],
[0.33086422],
[0.19425666],
[0.32084166],
[0.30551688],
[0.14800594],
[0.18241316],
[0.14760117],
[0.31546239],
]
)
max_mask=(arr==arr.max())
arr[max_mask]=1
arr[~max_mask]=0
打印(arr)
输出
[[0.]
[1.]
[0.]
[0.]
[0.]
[0.]
[0.]
[0.]
[0.]
[0.]]
编辑:这可以简化为:
arr = (arr == arr.max()).astype(int)
此解决方案使用遮罩将最大值设置为1,其他所有值设置为0
将numpy导入为np
arr=np.array(
[
[0.24330683],
[0.40597628],
[0.33086422],
[0.19425666],
[0.32084166],
[0.30551688],
[0.14800594],
[0.18241316],
[0.14760117],
[0.31546239],
]
)
max_mask=(arr==arr.max())
arr[max_mask]=1
arr[~max_mask]=0
打印(arr)
输出
[[0.]
[1.]
[0.]
[0.]
[0.]
[0.]
[0.]
[0.]
[0.]
[0.]]
编辑:这可以简化为:
arr = (arr == arr.max()).astype(int)
非常像蟒蛇!谢谢你,非常棒!谢谢你可以在这里找到你问题的答案:谢谢汤姆。我确实看过那篇文章,但这仅限于转换满足某个阈值(即>0.5)的任何值。你可以在这里找到你问题的答案:谢谢汤姆。我确实看过那篇文章,但这仅限于转换满足某个阈值(即>0.5)的任何值。