首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >numpy.bitwise_and.reduce出其不意?

numpy.bitwise_and.reduce出其不意?
EN

Stack Overflow用户
提问于 2014-01-10 17:41:16
回答 1查看 595关注 0票数 2

ufunc.reduce for numpy.bitwise_and.reduce似乎没有正确的行为.我是不是滥用了它?

代码语言:javascript
复制
>>> import numpy as np
>>> x = [0x211f,0x1013,0x1111]
>>> np.bitwise_or.accumulate(x)
array([ 8479, 12575, 12575])
>>> np.bitwise_and.accumulate(x)
array([8479,   19,   17])
>>> '%04x' % np.bitwise_or.reduce(x)
'311f'
>>> '%04x' % np.bitwise_and.reduce(x)
'0001'

reduce()的结果应该是accumulate()的最后一个值,而不是。我在这里错过了什么?

目前,我可以通过使用DeMorgan的身份(交换或和和,以及反转输入和输出)来解决问题:

代码语言:javascript
复制
>>> ~np.bitwise_or.reduce(np.invert(x))
17
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2014-01-10 17:53:49

根据您提供的文档,ufunc.reduce使用op.identity作为初始值。

numpy.bitwise_and.identity1,而不是0xffffffff....-1

代码语言:javascript
复制
>>> np.bitwise_and.identity
1

因此,numpy.bitwise_and.reduce([0x211f,0x1013,0x1111])相当于:

代码语言:javascript
复制
>>> np.bitwise_and(np.bitwise_and(np.bitwise_and(1, 0x211f), 0x1013), 0x1111)
1
>>> 1 & 0x211f & 0x1013 & 0x1111
1

代码语言:javascript
复制
>>> -1 & 0x211f & 0x1013 & 0x1111
17

似乎没有办法根据文档指定初始值。(与Python内置函数reduce不同)

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/21050875

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档