как загрузить np.array из текстового файла с помощью np.genfromtxt

#python-3.x #numpy #genfromtxt

#python-3.x #numpy #genfromtxt

Вопрос:

Файл имеет следующую структуру:

 h

w

P1,1_r P1,1_g P1,1_b

P1,2_r P1,2_g P1,2_b

...

P1,w_r P1,w_g P1,w_b

P2,1_r P2,1_g P2,1_b

...

Ph,w_r Ph,w_g Ph,w_b
  

Первая строка содержит одно целое число, h, которое является высотой изображения. Вторая строка содержит одно целое число, w, которое является шириной изображения. Следующие строки h x w содержат значение пикселя в виде списка из трех значений, соответствующих красному, зеленому и синему цвету пикселя. Список пикселей расположен в порядке сверху вниз, а затем слева направо.

Как преобразовать это в np.array с помощью np.genfromtxt?

Комментарии:

1. Это не способ использовать переполнение стека. Ваш вопрос должен касаться одной конкретной вещи, которую вы хотите знать или с которой сталкиваетесь. Сначала разбейте вашу проблему на этапы, сделайте попытку выполнить первый шаг, пока не найдете что-то, что вы не можете сделать, или не появится ошибка, затем посмотрите, сможете ли вы найти решение, выполнив поиск в Google / stack overflow, чтобы узнать, задавал ли его кто-то еще. Если вы не можете его найти, отправьте здесь конкретный вопрос, показывающий, что вы пытались до сих пор.

2. Кажется, первым шагом является загрузка данных из файла на python. Но что это за файл? например, .txt? Если это так, то найдите, например, здесь , как читать текстовые файлы на python. Сделайте попытку, и если вы не можете заставить его работать и не можете найти ответ на свой вопрос о переполнении стека, тогда отправьте вопрос с указанием вашего кода и любых сообщений об ошибках.

3. поэтому я меняю вопрос: как получить только первую строку и вторую строку из текстового файла и преобразовать их в int

Ответ №1:

Если вы хотите прочитать данные из файла .txt в виде массива numpy, вам нужно сначала прочитать данные файла, а затем использовать np.genfromtext для результирующего объекта:

 file = open("filename.txt")

#separate the first two lines containing h and w
hw = file.readlines(2)

# get h and w, as integers from hw by indexing them by line numbers
h = int(hw[0])
w = int(hw[1])
  

При этом остается остальная часть file , содержащая np.array с данными изображения. Используйте np.genfromtxt для этого:

 figure = np.genfromtxt(file)