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。
我不确定我是否误解了某些东西或者我的代码有问题。任何帮助表示赞赏。