Как сохранить несъемный дистрибутив в списке или массиве для вызова? [Дубликат]

У меня была аналогичная проблема, но в моем случае решение было другим. мой файл, который содержал php-код, назывался «somename.html», изменил его на «somename.php», работал отлично

24
задан bluevoxel 10 February 2015 в 20:11
поделиться

2 ответа

Самый надежный способ, который я нашел для этого, - использовать np.savetxt с np.loadtxt, а не np.fromfile, который лучше подходит для двоичных файлов, написанных с помощью tofile. Методы np.fromfile и np.tofile записывают и читают двоичные файлы, тогда как np.savetxt записывает текстовый файл. Итак, например:

In [1]: a = np.array([1, 2, 3, 4])
In [2]: np.savetxt('test1.txt', a, fmt='%d')
In [3]: b = np.loadtxt('test1.txt', dtype=int)
In [4]: a == b
Out[4]: array([ True,  True,  True,  True], dtype=bool)

Или:

In [5]: a.tofile('test2.dat')
In [6]: c = np.fromfile('test2.dat', dtype=int)
In [7]: c == a
Out[7]: array([ True,  True,  True,  True], dtype=bool)

Я использую прежний метод, даже если он медленнее и создает большие файлы (иногда): двоичный формат может быть

Для массивов NumPy существует независимый от платформы формат, который можно сохранить и прочитать с помощью np.save и np.load:

In  [8]: np.save('test3.npy', a)    # .npy extension is added if not given
In  [9]: d = np.load('test3.npy')
In [10]: a == d
Out[10]: array([ True,  True,  True,  True], dtype=bool)
47
ответ дан xnx 21 August 2018 в 11:25
поделиться
  • 1
    .npy файлы (например, сгенерированные np.save()) являются независимыми от платформы и будут более компактными и быстрыми, чем текстовые файлы. – ali_m 10 February 2015 в 21:05
  • 2
    также np.savez, если вы хотите, чтобы результат был сжат. – tegan 17 May 2018 в 14:49
  • 3
    – Brian Burns 9 October 2018 в 14:57
  • 4
    – user9979257 24 October 2018 в 06:21

np.fromfile() имеет аргумент ключевого слова sep=:

Сепаратор между элементами, если файл является текстовым файлом. Пустое ("") разделитель означает, что файл следует рассматривать как двоичный. Пробелы ("") в разделителе соответствуют нулевым или более пробельным символам. Сепаратор, состоящий только из пробелов, должен соответствовать хотя бы одному пробелу.

Значение по умолчанию sep="" означает, что np.fromfile() пытается считать его двоичным файлом, а не разделенным пробелом текстовый файл, чтобы вы получили ненужные значения. Если вы используете np.fromfile('markers.txt', sep=" "), вы получите результат, который вы ищете.

Однако, как указывали другие, np.loadtxt() является предпочтительным способом преобразования текстовых файлов в массивов numpy, и если файл не должен быть доступен для чтения, обычно лучше использовать бинарные форматы (например, np.load() / np.save()).

2
ответ дан ali_m 21 August 2018 в 11:25
поделиться
Другие вопросы по тегам:

Похожие вопросы: