理解するのが難しいスタックトレースを取得しています:
screwed_up_code.py in atleast_4d(arr)
28 def atleast_4d(arr):
29 stshape = arr.shape
30 while len(stshape)<4: stshape+=(1,)
31 print arr.shape, stshape
---> 32 return arr.reshape(stshape)
/usr/lib/python2.7/dist-packages/numpy/core/memmap.pyc in __array_finalize__(self, obj)
255 if hasattr(obj, '_mmap'):
256 self._mmap = obj._mmap
--> 257 self.filename = obj.filename
258 self.offset = obj.offset
259 self.mode = obj.mode
AttributeError: 'memmap' object has no attribute 'filename'
疑問に思った場合arr.shape = (192, 384, 6)
とstshape = (192, 384, 6, 1)
アップデート
NPE で示唆されているように、似たような AttributeError のバグ レポートを調べました。そこのポスターは、ndarray の酸洗いによって属性が失われたことを非難しました。私は確かに配列を酸洗いしており、ロードされた配列を次のように再活性化するとき:
newarr = numpy.ndarray(pickled_array)
pickled_array = newarr # use the recreated instead of the pickled arr
例外ではなく警告が表示され、コードが実行されます。
Exception AttributeError: AttributeError("'NoneType' object has no attribute 'tell'",) in ignored
Exception AttributeError: AttributeError("'NoneType' object has no attribute 'tell'",) in ignored
Exception AttributeError: AttributeError("'NoneType' object has no attribute 'tell'",) in <bound method memmap.__del__ of memmap([ 85389.2734375, 125935.75 , 173624.09375 , 272958.78125 ,
305687.65625 , 433026.3125 ], dtype=float32)> ignored
私のコードが実行されたことに十分満足しており、しばらくはそのままにしておきます。