У меня есть текстовый файл ASCII (в заданном формате, который я не могу изменить) с содержимым
previous data...
#
# some comment
2 a -0.9989532219119496
1 b 1.8002219998623799
1 c 0.2681232137509927
#
some other things...
, и я хотел бы прочитать этот файл в массив с пользовательским типом d ( "структурированный массив" ). Все это работает, когда файл является двоичным (удалите sep="\n"
ниже), но не работает, когда файл является ASCII:
import numpy as np
import string
# Create some fake data
N = 3
dtype = np.dtype([("a", "i4"), ("b", "S8"), ("c", "f8")])
a = np.zeros(N, dtype)
a["a"] = np.random.randint(0, 3, N)
a["b"] = np.array([x for x in string.ascii_lowercase[:N]])
a["c"] = np.random.normal(size=(N,))
print(a)
a.tofile("test.dat", sep="\n")
b = np.fromfile("test.dat", dtype=dtype, sep="\n")
print(b)
ValueError: Unable to read character files of that array type
Любые подсказки здесь?
(Theфайл также содержит другие данные, поэтому в реальной жизни я использую дескриптор файла вместо строки имени файла, но я полагаю, что это не имеет большого значения.)