запись "недостающих значений массива" в файл - PullRequest
3 голосов
/ 14 августа 2011
import numpy as np

f1= "test_io.csv"
f2= "test_io2.csv"

array = np.genfromtxt(f1,delimiter=',',missing_values='NA', filling_values=1.e20)
np.savetxt(f2,array,delimiter=',')

#np.savetxt(f2,array,delimiter=', missing_values = 1.e20, filling_values='NA')

Как подсказывает второй «savetxt», я хотел бы иметь возможность заменить отсутствующие значения, которые были считаны genfromtxt и заменены заполнением значений, на «NA» при записи файла. Лучший способ, который я могу найти, - это преобразовать каждую строку в массиве в массив str, заменить «пропущенное значение» и записать каждую строку с помощью csv writer. Есть ли способ лучше?

1 Ответ

1 голос
/ 15 августа 2011

Не существует встроенного способа сделать это, так как обычно проще просто свернуть свой собственный, чем сделать так, чтобы функция «один размер подходила всем» соответствовала вашим потребностям.

В вашем случае я бы не стал беспокоиться о модуле csv.Здорово, когда вам нужно прочитать сложные данные, но для чего-то такого простого гораздо проще не использовать их.

missing, fill = 1.e20, "NA"
with open("test_io2.csv", 'w') as outfile:
    for row in array:
        line = ','.join([str(x) for x in row if x != missing else fill])
        outfile.write(line + '\n')

Конечно, применяются обычные предостережения о проверке равенства чисел с плавающей запятой.Возможно, имеет смысл сделать что-то вроде if x < 9e19 else fill.Это будет зависеть от вашего конкретного приложения, хотя.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...