【问题标题】:converting numpy array weird issue转换 numpy 数组奇怪的问题
【发布时间】:2018-05-17 06:21:27
【问题描述】:

我有以下数据

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]]),即输入<type 'numpy.ndarray'>, <type 'numpy.ndarray'>

我正在使用以下方法读取数据

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

我尝试使用以下步骤将数据转换为所需的形状:

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

输出:

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

它产生如下输出:

那是[3 ..., 3 3 ] [[0......0]]

我所缺少的只是上面的格式。非常感谢您在这方面的任何帮助。

【问题讨论】:

    标签: python pandas numpy svm


    【解决方案1】:

    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 在我的例子中包含三行,所以有三个图像。请注意,reshape 函数为每个图像创建一个新轴(因此imgs[0] 是第一张图像,以此类推,len(imgs) 是图像的数量)并且每个图像的大小为 (28, 28)。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-03-22
      • 1970-01-01
      • 2021-05-25
      • 1970-01-01
      • 1970-01-01
      • 2019-10-10
      相关资源
      最近更新 更多