首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >numpy.view给出了值误差

numpy.view给出了值误差
EN

Stack Overflow用户
提问于 2013-10-22 15:00:57
回答 1查看 2.7K关注 0票数 2

在libtiff保存文件的上下文中遇到了这种情况,但现在我感到困惑了。有人能告诉我为什么这两者不对等吗?

代码语言:javascript
复制
ar1 = zeros((1000,1000),dtype=uint16)
ar1 = ar1.view(dtype=uint8) # works

ar2 = zeros((1000,2000),dtype=uint16)
ar2 = ar2[:,1000:]
ar2 = ar2.view(dtype=uint8) # ValueError: new type not compatible with array.

编辑:那么这也有效吗?

代码语言:javascript
复制
ar2 = zeros((1000,2000),dtype=uint16)
ar2 = array(ar2[:,1000:])
ar2 = ar2.view(dtype=uint8)
EN

回答 1

Stack Overflow用户

发布于 2013-10-22 15:18:19

这不是一个完整的答案,但可能会为我遗漏的细节指明方向。当您制作数组的一个片段时,您不再拥有连续的数据,并且您也不拥有这些数据。要查看这一点,请查看数组的标志:

代码语言:javascript
复制
ar2 = zeros((1000,2000),dtype=uint16)
ar2.flags

  C_CONTIGUOUS : True
  F_CONTIGUOUS : False
  OWNDATA : True
  WRITEABLE : True
  ALIGNED : True
  UPDATEIFCOPY : False

ar2 = ar2[:,1000:]
ar2.flags

  C_CONTIGUOUS : False
  F_CONTIGUOUS : False
  OWNDATA : False
  WRITEABLE : True
  ALIGNED : True
  UPDATEIFCOPY : False

我不知道是哪一个引起了实际的问题。正如您在编辑中所注意到的,如果您创建了切片数组的新副本,那么一切都很好。您可以使用您注意到的array()或类似于ar2=ar2[:,1000:].copy()之类的东西来完成这一任务。

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

https://stackoverflow.com/questions/19521493

复制
相关文章

相似问题

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