numpy中布尔数组的爱因斯坦求和

时间:2019-06-26 10:56:50

标签: numpy boolean-operations

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。

我不确定我是否误解了某些内容或我的代码是否存在问题。任何帮助表示赞赏。

1 个答案:

答案 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