Бинарный файл - это просто длинный список непрерывных данных;вам нужно сообщить np.fromfile () обоим , где искать и , какой тип данных ожидать.Возможно, это будет проще понять, если вы создадите свой собственный файл:
import numpy as np
with open('numpy_testfile', 'w+') as f:
## we create a "header" line, which collects the lengths of all relevant arrays
## you can then use this header line to tell np.fromfile() *how long* the arrays are
dimensions=np.array([0,10,0,0,10,0,3,10],dtype=np.int32)
dimensions.tofile(f) ## write to file
a=np.arange(0,10,1) ## some fake data, length 10
a.tofile(f) ## write to file
print(a.dtype)
b=np.arange(30,40,1) ## more fake data, length 10
b.tofile(f) ## write to file
print(b.dtype)
## more interesting data, this time it's of type float, length 3
c=np.array([3.14,4.22,55.0],dtype=np.float64)
c.tofile(f) ## write to file
print(c.dtype)
a.tofile(f) ## just for fun, let's write "a" again
with open('numpy_testfile', 'r+b') as f:
### what's important to know about this step is that
# numpy is "seeking" the file automatically, i.e. it is considering
# the first count=8, than the next count=10, and so on
# as "continuous data"
dim=np.fromfile(f,dtype=np.int32,count=8)
print(dim) ## our header line: [ 0 10 0 0 10 0 3 10]
a=np.fromfile(f,dtype=np.int64,count=dim[1])## read the dim[1]=10 numbers
b=np.fromfile(f,dtype=np.int64,count=dim[4])## and the next 10
## now it's dim[6]=3, and the dtype is float 10
c=np.fromfile(f,dtype=np.float64,count=dim[6] )#count=30)
## read "the rest", unspecified length, let's hope it's all int64 actually!
d=np.fromfile(f,dtype=np.int64)
print(a)
print(b)
print(c)
print(d)
Приложение: документация * numy весьма явна, когда речь идет о , препятствующемиспользуйте из np.tofile()
и np.fromfile()
:
Не полагайтесь на комбинацию tofile и fromfile для хранения данных, поскольку сгенерированные двоичные файлы не зависят от платформы.В частности, информация о порядке байтов или типе данных не сохраняется.Данные могут храниться в независимом от платформы формате .npy, используя вместо этого сохранение и загрузку.
Примечание для личного лица: если вы потратили пару дней на понимание этого кода, не делайтея не чувствую разочарования от обучения python
;мы все начинаем где-тоЯ бы посоветовал быть честным в отношении препятствий, с которыми вы столкнулись перед своим профессором (если это возникнет в разговоре), поскольку она / он должны быть в состоянии правильно утверждать, «где вы находитесь», когда речь идет о программировании.: -)