2016-12-13 1 views
2

мне нужно протравить данные, имеет вида: таблица из нескольких строк, имеющейтравильных Данные пользовательского формата

список кортежей, список

например [(1,2), (2,3), (3,4)] связано с [1,2,3]

Я не могу найти способ рассортировать данные и загрузить их так, чтобы я получить:

import cPickle 
f = open("data.pkl", 'rb') 
X,Y = cPickle.load(f) 

, так что X имеет только первый столбец данных, а Y - второй столбец.

Я думал хранить первый столбец и второй столбец отдельно, но как я могу загрузить такие данные в одном выражении?

a = [] 
a.append([(1,2),(2,3)]) 

и аналогичным образом для второй колонки.

b = [] 
b.append([1,2]) 

Тогда как рассолить и разложить его?

Большое спасибо.

+0

вы пробовали класс 'Bunch'? – Roxanne

ответ

1
class Bunch(dict): 
    """Container object for datasets 
    Dictionary-like object that exposes its keys as attributes. 
    >>> b = Bunch(a=1, b=2) 
    >>> b['b'] 
    2 
    >>> b.b 
    2 
    >>> b.a = 3 
    >>> b['a'] 
    3 
    >>> b.c = 6 
    >>> b['c'] 
    6 
    """ 

    def __init__(self, **kwargs): 
     super(Bunch, self).__init__(kwargs) 

    def __setattr__(self, key, value): 
     self[key] = value 

    def __dir__(self): 
     return self.keys() 

    def __getattr__(self, key): 
     try: 
      return self[key] 
     except KeyError: 
      raise AttributeError(key) 

import cPickle as pickle 

dataset = Bunch.Bunch(data=X, target=Y, 
         target_names=target_names_input, 
         DESCR=fdescr,feature_names=labels_names) 

def save_object(obj, filename): 
with open(filename, 'wb') as output: 
    pickle.dump(obj, output, pickle.HIGHEST_PROTOCOL) 

save_object(dataset,'data.pkl') 

with open('data.pkl', "rb") as f: 
data = pickle.load(f) 
X = data.data 
Y = data.target 

Я предположил, что вы имели некоторую форму полнометражных данных в строках вашей таблицы X и что ваш столбец Y является целевым вектором.

+0

спасибо, да X - это данные функции, а y - целевой вектор. Я не понял, как вы сначала сохраняете, а затем травля здесь. – Rafael

+0

@ Rafael, если этот ответ решит вашу проблему, вы можете выразить свою благодарность, отметив его как принятый :) – Roxanne

+0

уверен, я пометю его как принятый. здесь, сначала мне нужно сохранить x и y в файле (предположим, что x и y оба являются списками). затем в файле рассола. Моя путаница в том, как формат сохраняется в файле. Здесь я не вижу, как данные хранятся в файле. – Rafael

1

Попробуйте

import cPickle 

FILENAME = 'foo.pkl' 

X = [(1,2),(2,3),(3,4)] 
Y = [1,2,3] 

with open(FILENAME, 'wb') as f: 
    cPickle.dump((X, Y), f) 

with open(FILENAME, 'rb') as f: 
    x, y = cPickle.load(f) 

print(x) 
print(y) 
+0

Вы имеете в виду open ('data2.pkl', "rb") как f: \t \t pickle.dump ((X, Y), f). Пожалуйста, дайте простой пример сброса и загрузки X Y, который я могу запустить. большое спасибо. – Rafael

+0

@ Рафаэль, я улучшил этот пост в мксвете. – Gribouillis

+0

большое спасибо. он работает нормально. – Rafael

Смежные вопросы