test case:

#!/usr/bin/env python
import numpy as np
a=np.array(['2014', '2015', '2016'], dtype='datetime64')
x=np.datetime64('2015')
print a>x
np.save('test.npy', a)
b = np.load('test.npy', mmap_mode='c')
print b>x


result:

>>> [False False  True]
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
  File "/tmp/t.py", line 12, in <module>
    print b>x
  File "/usr/lib64/python2.7/site-packages/numpy/core/memmap.py", line
279, in __array_finalize__
    if hasattr(obj, '_mmap') and np.may_share_memory(self, obj):
  File "/usr/lib64/python2.7/site-packages/numpy/lib/utils.py", line
298, in may_share_memory
    a_low, a_high = byte_bounds(a)
  File "/usr/lib64/python2.7/site-packages/numpy/lib/utils.py", line
258, in byte_bounds
    bytes_a = int(ai['typestr'][2:])
ValueError: invalid literal for int() with base 10: '8[Y]'


fix:
diff --git a/numpy/lib/utils.py b/numpy/lib/utils.py
index 1f1cdfc..c73f2f1 100644
--- a/numpy/lib/utils.py
+++ b/numpy/lib/utils.py
@@ -210,7 +210,7 @@ def byte_bounds(a):
     a_data = ai['data'][0]
     astrides = ai['strides']
     ashape = ai['shape']
-    bytes_a = int(ai['typestr'][2:])
+    bytes_a = a.dtype.itemsize

     a_low = a_high = a_data
     if astrides is None: # contiguous case


will submit pull request via github
_______________________________________________
NumPy-Discussion mailing list
NumPy-Discussion@scipy.org
http://mail.scipy.org/mailman/listinfo/numpy-discussion

Reply via email to