Сначала вы сказали, что что-то не работает, теперь вы говорите, что оно зависает при попытке доступа к определенному массиву. numpy
имеет такой же синтаксис в 3,5 по сравнению с 2,7. Вам не нужно ничего переписывать.
np.load
имеет пару параметров, которые имеют дело с различиями между Py2 и Py3. Но я не уверен, что это проблема для вас.
fix_imports : bool, optional
Only useful when loading Python 2 generated pickled files on Python 3,
which includes npy/npz files containing object arrays. If `fix_imports`
is True, pickle will try to map the old Python 2 names to the new names
used in Python 3.
encoding : str, optional
What encoding to use when reading Python 2 strings. Only useful when
loading Python 2 generated pickled files in Python 3, which includes
npy/npz files containing object arrays. Values other than 'latin1',
'ASCII', and 'bytes' are not allowed, as they can corrupt numerical
data. Default: 'ASCII'
Попробуйте
print(list(train_data.keys()))
Здесь должны отображаться имена массивов, которые были сохранены в архиве zip
. Они совпадают с именами в загрузке Py2? Они включают название «2494»?
Несколько вещей необычны в отношении:
X,Y = train_data['2494']
Именование массива в zip-архиве по номеру строки и распаковка загрузки в две переменные.
Вы знаете что-нибудь о том, как это было savez
? Что было сохранено?
Другой вопрос - вы загружаете этот файл с той же машины, на которой работал Py2? Или файл был перенесен с другого компьютера и, возможно, поврежден?
Как показывают эти параметры, в коде pickle
имеются различия между Py2 и Py3. Если исходное сохранение включало в себя массивы dtype объектов или объекты, не являющиеся массивами, то они будут pickled
, и в версиях маринадов могут быть несовместимости.