Mam wykres kilku kolumn z dużej ilości danych (przez numpy.genfromtxt) w równej kolumnie czasu. Brakujące dane są często nazywane nan, -999, -9999 itp. Jednak nie mogę wymyślić, jak usunąć wiele wartości z tablicy. Oto, co obecnie mam:Tworzenie zamaskowanej tablicy w języku Python z wieloma podanymi wartościami
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]
Po tym punkcie używam matplotlib, aby utworzyć odpowiednie liczby dla każdej kolumny. Działa to dobrze, jeśli nan_values jest jedną liczbą całkowitą, ale szukam użyć listy.
EDYCJA: Oto działający przykład.
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.]]
To nie zadziała, jeśli nan_values = ['nan', -999], co jest tym czego oczekuję.
proszę umieszczać tablicę próbek (lista). –
@AshwiniChaudhary Zmodyfikowalem to pytanie tak, aby zawierało działający przykład. – Josiah