Как я могу загрузить число (не numpy ndarray) из файла npz, используя NumSharp - PullRequest
0 голосов
/ 30 января 2020

Я использую NumSharp (C# оболочку numpy) для загрузки файлов npz, полученных от третьих лиц. Если файл npz содержит число вместо ndarray, то я не могу загрузить его с помощью NumSharp. Ниже MVCE моей проблемы.

Это код python для создания файла npz:

import numpy as np

error = 2
np.savez("test_error.npz", error=error )

И это код C# для загрузки файла npz:

using NumSharp;

var dict_error = np.Load_Npz<int[]>("test_error.npz")
var error = dict_error["error.npy"]

Что я ожидаю: error будет массивом типа int с одним элементом равным 2.

Фактический результат: я получил следующее исключение :

System.ArgumentOutOfRangeException: '長 さ を 0 未 満 に す る こ と は は き ま せ ん。' (грубо переводится как "нельзя установить длину на значение меньше 0")

場所 System.String.Substring (int32 startIndex, Int32 length)

場所 NumSharp.np.parseReader (читатель BinaryReader, Int32 & байты, тип & t, Int32 [] & shape)

場所 NumSharp.np .LoadMatrix (потоковый поток)

場所 NumSharp.np.Load [T] (потоковый поток)

場所 NumSharp.NpzDictionary`1.OpenEntry (запись ZipArchiveEntry)

場所 [путь к моему методу]

Если я изменю свой код на np.Load_Npz<int>("model/test_ok.npz");, я получу следующее ошибка mpile:

Ошибка CS0452 Тип 'int' должен быть ссылочным типом, чтобы использовать его в качестве параметра 'T' в типе или методе generi c np.Load_Npz (string) '

Кто-нибудь сталкивался с такой же проблемой?

Я использую. Net Framework 4.7, NumSharp версия 0.20.5.

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