Инициализация memmap для идентичных файлов создает разные массивы - PullRequest
0 голосов
/ 26 июня 2018

Я перевожу некоторые алгоритмы и проверяю свою работу, сравнивая результаты.У меня есть файл .img, созданный IDL, и файл .img, созданный Python.Два вывода идентичны по битам, но когда я открываю memmap для продолжения обработки, файл Python теряет некоторые данные.

>>> mm = np.memmap("X:/eordentl/Processing Algorithms/processed_data_py/
        C5704B-00045Z-03_verytop_2017_08_17_03_28_29/
        C5704B-00045Z-03_verytop_2017_08_17_03_28_29_SWIRcalib.img", 
        dtype="float32", mode="r", offset=0, shape=(333,320,285))
>>> mm[0]
memmap([[ 0.        ,  0.        ,  0.        , ...,  0.        ,
          0.        ,  0.        ],
        [ 0.        ,  0.        ,  0.        , ...,  0.        ,
          0.        ,  0.        ],
        [ 0.        ,  0.        ,  0.        , ...,  0.        ,
          0.        ,  0.        ],
        ...,
        [ 0.3388325 ,  0.30027774,  0.32364482, ...,  0.40399274,
          0.42492244,  0.41838124],
        [ 0.28071803,  0.30334   ,  0.32874447, ...,  0.10009208,
          0.10556249,  0.05749646],
        [ 0.09928307,  0.1659135 ,  0.36206895, ...,  0.00572116,
         -0.00990769,  0.00214016]], dtype=float32)
>>> mm2=np.memmap("X:/eordentl/Processing Algorithms/processed_data_idl/
        C5704B-00045Z-03_verytop_2017_08_17_03_28_29_SWIRcalib.img", 
        dtype="float32", mode="r", offset=0, shape=(333,320,285))
>>> mm2[0]
memmap([[ 0.01608727,  0.03300966,  0.04274924, ...,  0.07621645,
          0.07274907,  0.07459512],
        [ 0.06294538,  0.07551169,  0.07973923, ...,  0.42498964,
          0.38354877,  0.396222  ],
        [ 0.34490117,  0.3083234 ,  0.27291125, ...,  0.32263884,
          0.31246758,  0.3155154 ],
        ...,
        [ 0.3388325 ,  0.30027774,  0.32364482, ...,  0.40399274,
          0.42492244,  0.41838124],
        [ 0.28071803,  0.30334   ,  0.32874447, ...,  0.10009208,
          0.10556249,  0.05749646],
        [ 0.09928307,  0.1659135 ,  0.36206895, ...,  0.00572116,
         -0.00990769,  0.00214016]], dtype=float32)
>>> import filecmp
>>> filecmp.cmp("X:/eordentl/Processing Algorithms/processed_data_py/C5704B-00045Z-03_verytop_2017_08_17_03_28_29/C5704B-00045Z-03_verytop_2017_08_17_03_28_29_SWIRcalib.img","X:/eordentl/Processing Algorithms/processed_data_idl/C5704B-00045Z-03_verytop_2017_08_17_03_28_29_SWIRcalib.img")
True

Я невероятно запутался.Это не единственные различия, см.

>>> np.count_nonzero(mm2-mm)
109685

, хотя число, скорее всего, связано с ошибкой с плавающей запятой.

Учитывая, что файлы по битам идентичны (проверено через FC / bна windows cmd), что может быть причиной разницы, и как я могу это исправить?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...