微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

不允许 Numpy memmap 负维度

如何解决不允许 Numpy memmap 负维度

Numpy memmap Reference page

当 mode != 'r' 时,即使超出文件尾的正偏移量也是有效的;

fmt = "IIiiIIddiIiii64sIIII48sxxxx"
fmt1 = "?Idd16s"

file = open(self.resultName,"wb")        
file.write(struct.pack(fmt,*self.header))

for i in range(someVar):
    file.write(struct.pack(fmt1,*self.arr2[i]))      

file.flush()
file.close

wave = np.memmap(self.resultName,dtype = np.uint16,mode = "r+",offset = 1024) 

上面的代码产生了一个错误

  File "C:\Python\python38\lib\site-packages\numpy\core\memmap.py",line 266,in __new__
    self = ndarray.__new__(subtype,shape,dtype=descr,buffer=mm,ValueError: negative dimensions are not allowed

如果去除了偏移量,就没有错误

有人遇到过这个问题吗?你是怎么解决的?

谢谢

解决方法

文件将被写入,应该在使用 memmap 之前存在。 必须定义形状,然后才不会出错。

wave = np.memmap(self.resultName,dtype = np.uint16,mode = "r+",offset = 1024,shape = 7000000)

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。