Перекодировать отсутствующие данные Numpy

Я читаю данные переписи, используя функцию matplotlib cvs2rec - отлично работает, дает мне хороший ndarray.

Но есть несколько столбцов, в которых все значения равны «none» с dtype | 04. Это вызывает проблемы, когда я ввожу в Atpy «TypeError: объект NoneType не имеет len ()». Что-то вроде «9999» или другое отсутствует будет работать для меня Маска не будет работать в этом случае, потому что я передаю реальный массив в ATPY, и он не будет преобразовывать MASK. Функция Put в numpy не будет работать без значений, которые являются лучшим способом изменить значения ( Я думаю). Я думаю, что какой-то логический массив - это путь, но я не могу заставить его работать.

Итак, каков хороший/быстрый способ изменить никакие значения и/или неинициализированный массив numpy на что-то вроде «9999» или другое перекодирование. Нет маскировки.

Спасибо,

Мэтью


person user531525    schedule 10.08.2011    source источник


Ответы (2)


Вот решение этой проблемы, хотя, если ваши данные представляют собой массив записей, вы должны применить эту операцию только к своему столбцу, а не ко всему массиву:

import numpy as np
# initialise some data with None in it
a = np.array([1, 2, 3, None])
a = np.where(a == np.array(None), 9999, a)

Обратите внимание, что вам нужно преобразовать None в массив numpy, чтобы это работало.

person DaveP    schedule 12.08.2011
comment
Не волнуйтесь. Кстати, если ответ решает вашу проблему, то хорошим тоном будет принять его, чтобы решатель заработал себе репутацию. - person DaveP; 15.08.2011

вы можете использовать массив масок при расчете. и при передаче массива в ATPY вы можете вызвать метод fill(9999) массива масок, чтобы преобразовать массив масок в обычный массив с заменой недопустимых значений на 9999.

person HYRY    schedule 12.08.2011