假设我有一个整数为1到10的数组,并且必须用0替换所有小于6的整数,并且用1替换所有大于等于6的整数。目前,我这样做:
arry[arry < 6] = 0
arry[arry >= 6] = 1
我想知道将这两个语句组合成一行代码或任何其他解决方案的方法是什么。
答案 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)
[int(e >= 6) for e in arry]
这是因为True
is defined to be the same value as 1
and False
is defined to be the same value as 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})