У меня была аналогичная проблема, но в моем случае решение было другим. мой файл, который содержал php-код, назывался «somename.html», изменил его на «somename.php», работал отлично
Самый надежный способ, который я нашел для этого, - использовать 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)
np.fromfile()
имеет аргумент ключевого слова sep=
:
Сепаратор между элементами, если файл является текстовым файлом. Пустое ("") разделитель означает, что файл следует рассматривать как двоичный. Пробелы ("") в разделителе соответствуют нулевым или более пробельным символам. Сепаратор, состоящий только из пробелов, должен соответствовать хотя бы одному пробелу.
Значение по умолчанию
sep=""
означает, чтоnp.fromfile()
пытается считать его двоичным файлом, а не разделенным пробелом текстовый файл, чтобы вы получили ненужные значения. Если вы используетеnp.fromfile('markers.txt', sep=" ")
, вы получите результат, который вы ищете.Однако, как указывали другие,
np.loadtxt()
является предпочтительным способом преобразования текстовых файлов в массивов numpy, и если файл не должен быть доступен для чтения, обычно лучше использовать бинарные форматы (например,np.load()
/np.save()
).
.npy
файлы (например, сгенерированныеnp.save()
) являются i> независимыми от платформы и будут более компактными и быстрыми, чем текстовые файлы. – ali_m 10 February 2015 в 21:05np.savez
, если вы хотите, чтобы результат был сжат. – tegan 17 May 2018 в 14:49