Numpy memmap negative dimensions not allowed

90 Views Asked by At

Numpy memmap Reference page

When mode != 'r', even positive offsets beyond end of file are valid;

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) 

The code above produces an error:

  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

If the offset is removed, no errors.

Did somebody have the issue? How did you solve it?

Thanks

1

There are 1 best solutions below

0
On

The file would be written to, should exist before memmap used. The shape has to be defined, then no errors.

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