从二进制文件创建2D numpy数组?

时间:2019-04-10 04:53:24

标签: numpy binaryfiles

我正在使用以下数据集,该数据集是来自http://archive.ics.uci.edu/ml/machine-learning-databases/breast-cancer-wisconsin/breast-cancer-wisconsin.data

的二进制文件

数据如下:

1350423,5,10,10,8,5,5,7,10,1,4

1352848,3,10,7,8,5,8,7,4,1,4

1353092,3,2,1,2,2,1,3,1,1,2

1354840,2,1,1,1,2,1,3,1,1,2

1354840,5,3,2,1,3,1,1,1,1,2

1355260,1,1,1,1,2,1,2,1,1,2

1365075,4,1,4,1,2,1,1,1,1,2

1365328,1,1,2,1,2,1,2,1,1,2

1368267,5,1,1,1,2,1,1,1,1,2

1368273,1,1,1,1,2,1,1,1,1,2

1368882,2,1,1,1,2,1,1,1,1,2

二进制文件有699行。

然后我使用下面的代码从保存为'sample.data'的二进制文件中获取数据,并将其保存在2D numpy数组中:

import numpy as np

def main():
    dtype = np.dtype('i8')
    b = np.fromfile('sample.data', dtype=dtype)
    ndata = np.array(b)
    print(ndata.shape)

main()

我正在寻找一个(699,11)数组,即二进制文件中的每一行都为numpy行,而每个元素之间以逗号分隔为numpy行的元素。

在这里我可以做什么以达到相同的目的?

1 个答案:

答案 0 :(得分:0)

我下载了文件http://archive.ics.uci.edu/ml/machine-learning-databases/breast-cancer-wisconsin/unformatted-data,然后执行了以下操作:

ndata = np.genfromtxt('unformatted-data', skip_header=16, delimiter=',')

数组ndata的形状为(699,11)。

请注意,因为其中存在各种数据组(文件中有numpy正在忽略的注释),将它们全部合并在一起可能没有意义。