首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >NumPy bitwise_and函数的约简

NumPy bitwise_and函数的约简
EN

Stack Overflow用户
提问于 2016-12-06 23:14:54
回答 1查看 888关注 0票数 2

考虑以下numpy数组:

代码语言:javascript
运行
复制
x = np.array([2]*4, dtype=np.uint8)

这只是一个四点2的数组。

我想对这个数组执行bitwise_and还原:

代码语言:javascript
运行
复制
y = np.bitwise_and.reduce(x)

我希望结果是:

代码语言:javascript
运行
复制
2

因为数组的每个元素是相同的,所以连续和‘s应该产生相同的结果,但是我得到:

代码语言:javascript
运行
复制
0

为什么会有差异?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2016-12-06 23:50:12

reduce文档字符串中,将解释该函数等效于

代码语言:javascript
运行
复制
 r = op.identity # op = ufunc
 for i in range(len(A)):
   r = op(r, A[i])
 return r

问题是np.bitwise_and.identity是1:

代码语言:javascript
运行
复制
In [100]: np.bitwise_and.identity
Out[100]: 1

要使reduce方法像您所期望的那样工作,标识必须是一个整数,所有位都设置为1。

上面的代码是使用numpy 1.11.2运行的。问题是修正了numpy的开发版本

代码语言:javascript
运行
复制
In [3]: np.__version__
Out[3]: '1.13.0.dev0+87c1dab'

In [4]: np.bitwise_and.identity
Out[4]: -1

In [5]: x = np.array([2]*4, dtype=np.uint8)

In [6]: np.bitwise_and.reduce(x)
Out[6]: 2
票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/41006676

复制
相关文章

相似问题

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