Подсчет параметров в numpy.fromfile не имеет никакого эффекта - PullRequest
0 голосов
/ 13 мая 2018

Этот вопрос может быть тривиальным, но я действительно не знаю, как это исправить. Предположим, я сгенерировал массив numpy размера (4,3), используя тип np.int64 с последующей записью в виде двоичного файла. Массив выглядит так:

[[ 1  2  3]
 [ 4  5  6]
 [ 7  8  9]
 [10 11 12]]

Теперь предположим, что моя цель - прочитать только второй ряд, [ 4 5 6]. Это должно работать с использованием функции seek () по умолчанию. Для этого я написал следующее:

import numpy as np
import os

# To write
X = [[1, 2, 3], [4, 5, 6], [7, 8, 9], [10, 11, 12]]
X = np.asarray(X, dtype=np.int64)
print("%s\n\n" % X)
X.astype(np.int64).tofile('test.dat')

# To read
f = open('test.dat', "rb")
n = 4
dim = 3
r = 1
f.seek((r*dim*8), os.SEEK_SET)

data = np.fromfile(f, count=(2*dim*8), dtype=np.int64).reshape(-1, dim)
print("The Reading data is:\n %s\n" % data)

Однако я получаю весь массив, хотя я хочу только [ 4 5 6]:

The Reading data is:
 [[ 4  5  6]
 [ 7  8  9]
 [10 11 12]]

В np.fromfile параметр count=(r*dim*8), похоже, не действует !! Это ошибка? или я тут что-то не так делаю!

Спасибо

1 Ответ

0 голосов
/ 13 мая 2018

Если вы хотите только [4 5 6] (1 элемент с 3 элементами), ваш счет должен быть вашим dim (т.е. 3)

data = np.fromfile(f, count=dim, dtype=np.int64).reshape(-1, dim)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...