0

Numpy memmap 参考页面

当 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

如果偏移被移除,则没有错误。

有人有问题吗?你是怎么解决的?

谢谢

4

1 回答 1

0

该文件将被写入,应该在使用 memmap 之前存在。必须定义形状,然后没有错误。

wave = np.memmap(self.resultName, dtype = np.uint16, mode = "r+", offset = 1024, shape = 7000000)
于 2021-01-23T02:02:01.277 回答