2017-12-03 16 views
0

データ変換Iは、次ているnumpyのアレイ奇妙な問題

3 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 12 41 146 146 48 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 12 129 253 253 253 250 163 18 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 133 253 253 253 253 253 253 229 70 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 101 253 252 145 102 107 237 253 247 128 10 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 181 253 167 0 0 0 61 235 253 253 163 5 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 255 253 43 0 0 0 0 58 193 253 253 164 4 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 187 253 32 0 0 0 0 0 55 236 253 253 86 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 146 253 32 0 100 190 87 87 87 147 253 253 123 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 94 253 78 40 248 253 253 253 253 253 253 253 223 84 15 0 0 0 0 0 0 0 0 0 0 0 0 0 14 92 12 35 240 253 253 253 253 253 253 253 253 253 244 89 10 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 75 161 179 253 253 253 253 253 253 253 253 253 209 43 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 3 16 16 39 38 16 16 145 243 253 253 185 48 0 0 0 0 0 0 0 0 0 0 0 0 0 20 58 0 0 0 0 0 0 0 0 58 209 253 253 183 0 0 0 0 0 0 0 0 0 0 0 0 77 221 247 79 0 0 0 0 0 0 0 0 13 219 253 240 72 0 0 0 0 0 0 0 0 0 0 0 90 247 253 252 57 0 0 0 0 0 0 0 0 53 251 253 191 0 0 0 0 0 0 0 0 0 0 0 0 116 253 253 59 0 0 0 0 0 0 0 0 99 252 253 145 0 0 0 0 0 0 0 0 0 0 0 0 14 188 253 221 158 38 0 0 0 0 111 211 246 253 253 145 0 0 0 0 0 0 0 0 0 0 0 0 0 12 221 246 253 251 249 249 249 249 253 253 253 253 200 19 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 95 183 228 253 253 253 253 253 253 195 124 23 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 24 37 138 74 126 88 37 7 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 

列1は、画像のラベルであり、他は画素です。つまり、最初の列がラベルである785個の列が存在し、他の784個は28 * 28個のピクセル画像である。私は、データは次の形式

for column 1:array([ 3.,....])) and for column 2-784: (array([[ 0.....0]])で取得しようとしています、それは私がデータを読み取ることが

data='~/train.csv' 
dataset = genfromtxt(dataset, delimiter=",", dtype=np.dtype('>i4'))[1:] 

def gen_lin_separable_overlap_data(): 
     labels = [x[0] for x in dataset] 
     data = [x[1:]/float(x.max()) for x in dataset] # with scaling 

     return labels, data 

を以下の方法を使用しています<type 'numpy.ndarray'>, <type 'numpy.ndarray'>

を入力している私は、変換するには、次の手順を使用してみました

labels, data =gen_lin_separable_overlap_data() #reads the data 
labels=np.array(labels) 
data=np.array(data) #or np.array([data]) 

出力:

所望の形状へのデータ私が行方不明ですすべてが上記のようなフォーマットである [3 ..., 3 3 ] [[0......0]]

ある

`labels.shape #(40,) 
for np.array([data]), data.shape #(1, 40, 784) 
for data=np.array(data), data.shape(40,784)` 

それはのような出力が得られます。これについての助けは非常に高く評価されます。

答えて

0

Numpyはテキストファイルを配列に読み込むための関数loadtxt()を持っていますが、これはあなたの目的にはるかに簡単です。

import numpy as np 
imgs = np.loadtxt('train.csv', delimiter=',', dtype=np.uint8)[:, 1:].reshape(-1, 28, 28) 
print(imgs.shape) 

(3、28、28)

ここでファイルtrain.csvは、私の場合は3行を含んで、その3枚の画像があります。 reshape関数は、画像ごとに新しい軸を作成します(imgs[0]が最初の画像であり、len(imgs)が画像の数です)。各画像にはサイズ(28,28)が与えられます。