Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/277.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
将numpy数组中的值转换为0或1的Python方式_Python_Numpy - Fatal编程技术网

将numpy数组中的值转换为0或1的Python方式

将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 ==

我有一个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 == 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)的任何值。