numpy中的布尔数组的爱因斯坦求和(numpy.einsum)不会产生预期的结果。 Numpy.einsum函数对布尔数组执行逻辑运算,这在数字上下文中是有问题的。
# summation of a boolean numpy array
x = numpy.array([True, False, True])
print(numpy.sum(x))
# output: 2
print(numpy.einsum('i->', x))
# output: True
对于布尔数组x = [True,False,True],我希望x的总和为2,并且结果不应取决于函数的特定选择。但是,numpy.sum为2,numpy.einsum为True。
我不确定我是否误解了某些内容或我的代码是否存在问题。任何帮助表示赞赏。
答案 0 :(得分:1)
这里的区别是const isPrime = n => {
for(let i = 2; i <= Math.sqrt(n); i++) {
if(n % i === 0) return false;
}
return true;
};
在求和之前将sum
转换为整数,而boolean
跳过此步骤,除非您明确指定。
尝试:
einsum