基于大于一行的值分配0和1

时间:2014-11-11 05:32:28

标签: python numpy

假设我有一个整数为1到10的数组,并且必须用0替换所有小于6的整数,并且用1替换所有大于等于6的整数。目前,我这样做:

arry[arry < 6] = 0
arry[arry >= 6] = 1

我想知道将这两个语句组合成一行代码或任何其他解决方案的方法是什么。

6 个答案:

答案 0 :(得分:3)

我假设arry是一个numpy数组(你正在使用的智能索引似乎表明了这一点)。在这种情况下,你可以简单地做:

arry = (arry >= 6).astype(int)

其中astype(int)会将布尔数组arry >= 6转换为整数数组。

答案 1 :(得分:1)

[1 if e >= 6 else 0 for e in arry]

对于numpy数组,(arry >= 6)提供了一个True / False数组,您可以将其乘以1

(arry >= 6) * 1

或添加0

(arry >= 6) + 0

或转换为int

(a >= 6).astype(int)

答案 2 :(得分:1)

您可以使用简单的列表理解:

array = [0 if num < 6 else 1 for num in arry]

这相当于以下循环:

temp = []
for num in arry:
    if num < 6:
        temp.append(0)
    else:
        temp.append(1)
arry = temp

答案 3 :(得分:0)

答案 4 :(得分:0)

list(map(lambda i: 0 if i<6 else 1, a))

答案 5 :(得分:0)

[1, 2, 3, 4, 5, 6, 7, 8, 9, 10].map(function (n) {return n >= 6 ? 1 : 0})