2017-03-23 19 views
0

からのデータとラベルを取得:previous questionPythonの - 私は、次のように見えるピクルスファイル持っピクルスファイル

[array([[[148, 124, 115], 
     [150, 127, 116], 
     [154, 129, 121], 
     ..., 
     [159, 142, 133], 
     [159, 142, 133], 
     [161, 145, 142]], 

     [[165, 136, 145], 
     [176, 137, 141], 
     [178, 138, 144], 
     ..., 
     [199, 163, 171], 
     [202, 163, 167], 
     [200, 158, 163]]]), array([1, 1])] 

を、我々は別にそれを行うことによって、データとラベルを取得することができました。しかし、私は多くのイメージを持っていると適切ではないでしょう。

次のように私のスクリプトは、今になります

data, labels = [], [] 
    for i in range(0, 1): 

     filename = 'data.pickle' 
     batch_data = unpickle(filename) 
     if len(data) > 0: 
      data = np.vstack((data, batch_data[0][i])) 
      labels = np.hstack((labels, batch_data[1][i])) 
     else: 
      data = batch_data[0][0] 
      labels = batch_data[1][0] 

     data = data.astype(np.float32) 
     return data, labels 

私はコードとprintインスタンスのラベルを実行すると、私はいつも1を取得し、私は2つのラベル、[1 1]を得るために期待していた一方で(私はありません)配列として表示する必要がありますか?

私はここで間違っていますか?

ありがとうございました。

答えて

2

私はラベルを取得することができた:

In [37]: images = pickle_data[0] 

In [38]: labels = pickle_data[1] 

は、アレイを分解しますあなたがそれが期待される方法。私が使用し

# Create batch data that represents what you are asking, I created three labels and data 
batch_data = np.array([[np.random.random((5,5)), np.random.random((5,5)), np.random.random((5,5))], np.array([1,1,1])]) 

#pickle the data 
import pickle 
pickle.dump(batch_data, open("test.pickle", "wb")) 

# create data and labels seperately 

def test_func(batch_data): 
    data, labels = [], [] 
    for i in range(0, batch_data.shape[1]): 
     if len(data) > 0: 
      data = np.vstack((data, batch_data[0][i])) 
      labels = np.hstack((labels, batch_data[1][i])) 
     else: 
      data = batch_data[0][0] 
      labels = batch_data[1][0] 
     data = data.astype(np.float32) 
    return data, labels 

# unpickle 
unpickled_batch_data = pickle.load(open("test.pickle", "rb")) 

# get stacked data and labels 
data, labels = test_func(unpickled_batch_data) 
print labels 

戻り

[1 1 1] 
0

あなたは2回だけzipを使用して逃げることができるかもしれ:今すぐラベルとデータがインデックスによって対応

In [25]: data, labels = zip(*zip(*pickle_data)) 

In [26]: data 
Out[26]: 
(array([[148, 124, 115], 
     [150, 127, 116], 
     [154, 129, 121], 
     [159, 142, 133], 
     [159, 142, 133], 
     [161, 145, 142]]), array([[165, 136, 145], 
     [176, 137, 141], 
     [178, 138, 144], 
     [199, 163, 171], 
     [202, 163, 167], 
     [200, 158, 163]])) 

In [27]: labels 
Out[27]: (1, 1) 

In [24]: pickle_data = [array([[[148, 124, 115], 
    ...:   [150, 127, 116], 
    ...:   [154, 129, 121], 
    ...:   [159, 142, 133], 
    ...:   [159, 142, 133], 
    ...:   [161, 145, 142]], 
    ...: 
    ...:  [[165, 136, 145], 
    ...:   [176, 137, 141], 
    ...:   [178, 138, 144], 
    ...:   [199, 163, 171], 
    ...:   [202, 163, 167], 
    ...:   [200, 158, 163]]]), array([1, 1])] 

また*オペレータとの開梱引数が必要になります。

In [28]: data[0] 
Out[28]: 
array([[148, 124, 115], 
     [150, 127, 116], 
     [154, 129, 121], 
     [159, 142, 133], 
     [159, 142, 133], 
     [161, 145, 142]]) 

In [29]: data[1] 
Out[29]: 
array([[165, 136, 145], 
     [176, 137, 141], 
     [178, 138, 144], 
     [199, 163, 171], 
     [202, 163, 167], 
     [200, 158, 163]]) 

In [30]: labels[0] 
Out[30]: 1 

In [31]: labels[1] 
Out[31]: 1 

また、y私たちの画像が第1の軸に沿って保存されている、あなただけのリストの内包表記を使用してアレイのリストに配列を分解することができます。

In [39]: images = [x for x in images] 

In [40]: images[0] 
Out[40]: 
array([[148, 124, 115], 
     [150, 127, 116], 
     [154, 129, 121], 
     [159, 142, 133], 
     [159, 142, 133], 
     [161, 145, 142]]) 

In [41]: images[1] 
Out[41]: 
array([[165, 136, 145], 
     [176, 137, 141], 
     [178, 138, 144], 
     [199, 163, 171], 
     [202, 163, 167], 
     [200, 158, 163]]) 

In [42]: labels[0] 
Out[42]: 1 

In [43]: labels[1] 
Out[43]: 1 

In [44]: labels 
Out[44]: array([1, 1]) 

In [45]: images 
Out[45]: 
[array([[148, 124, 115], 
     [150, 127, 116], 
     [154, 129, 121], 
     [159, 142, 133], 
     [159, 142, 133], 
     [161, 145, 142]]), array([[165, 136, 145], 
     [176, 137, 141], 
     [178, 138, 144], 
     [199, 163, 171], 
     [202, 163, 167], 
     [200, 158, 163]])] 

In [46]: 
関連する問題