Создание маскированного массива в Python с несколькими заданными значениями

Я рисую несколько столбцов большого массива данных (через numpy.genfromtxt) в зависимости от времени одинакового размера. столбец. Отсутствующие данные часто обозначаются как nan, -999, -9999 и т. д. Однако я не могу понять, как удалить несколько значений из массива. Вот что у меня сейчас есть:

for cur_col in range(start_col, total_col):
    # Generate what is to be graphed by removing nan values
    data_mask = (file_data[:, cur_col] != nan_values)
    y_data = file_data[:, cur_col][data_mask]
    x_data = file_data[:, time_col][data_mask]

После чего я использую matplotlib для создания соответствующих цифр для каждого столбца. Это отлично работает, если nan_values ​​представляет собой одно целое число, но я хочу использовать список.

РЕДАКТИРОВАТЬ: Вот рабочий пример.

import numpy as np

file_data = np.arange(12.0).reshape((4,3))
file_data[1,1] = np.nan
file_data[2,2] = -999
nan_values = -999

for cur_col in range(1,3):
    # Generate what is to be graphed by removing nan values
    data_mask = (file_data[:, cur_col] != nan_values)
    y_data = file_data[:, cur_col][data_mask]
    x_data = file_data[:, 0][data_mask]
    print 'y: ' + str(y_data)
    print 'x: ' + str(x_data)
print file_data

>>> y: [  1.  nan   7.  10.]
    x: [ 0.  3.  6.  9.]
    y: [  2.   5.  11.]
    x: [ 0.  3.  9.]
    [[   0.    1.    2.]
    [   3.   nan    5.]
    [   6.    7. -999.]
    [   9.   10.   11.]]

Это не сработает, если nan_values ​​= ['nan', -999], чего я и добиваюсь.

5
задан Josiah 21 June 2012 в 21:47
поделиться