读取大型数据(300 MB)
mathematica吧
全部回复
仅看楼主
level 1
ixwind 楼主
有谁知道怎么用Mathematics读取大型数据吗?我尝试过用Import但是读取会死机,用Read也是,请问有其他的比较快的读取途径么?
2018年04月16日 15点04分 1
吧务
level 11
我读两个g也不会呀 我的是二进制格式 存的是单精度浮点数 BinaryReadList[your file,"Real32"]
2018年04月17日 06点04分 2
支持吧主的回答,大规模的数据不要用默认的mat格式,最好用二进制格式,可以大幅降低空间需求。
2018年04月20日 13点04分
好吧 我读取的是CSV还有TXT,Dat也是,老死机,请问吧主怎么能把数据转换成二进制格式呢?
2018年04月22日 13点04分
占楼,很有用
2018年04月26日 01点04分
level 8
看你具体什么格式了
我有读取过8G的。。。
2018年04月17日 07点04分 3
谢谢回答我应该是格式不对 我用的txt csv dat 都不能读取太大了
2018年04月22日 13点04分
@ixwind 应该不算大。。。
2018年04月23日 11点04分
吧务
level 11
二进制或者你可以用hdf5文件存储数据,又能存还能对文件大小做压缩。不过mna对hdf5支持还不够完美,比如h5文件太大或者压缩格式的h5不能用于训练mma的神经网络。所以mma处理数据,小文件用txt大文件二进制dat.实在不好处理就用python吧
2018年04月20日 14点04分 4
吧务
level 11
写二进制文件用BinaryWrite
2018年04月20日 14点04分 5
这个直接用binary write打开我的数据文件然后另存为二进制形式就行了么?
2018年04月22日 13点04分
@ixwind 看楼下
2018年04月22日 14点04分
吧务
level 11
贴一贴我以前记的笔记
比如你的数据是矩阵:
data = RandomReal[1, {100, 20}];
Export["tets.dat", data, "Real32"]
这样就是导出二进制了 但是Export 不够快 改成BinaryWrite更好
导入就是BinaryReadList["test.dat", "Real32"]或者Import["test.dat", "Real32"]
但是导入是一维数据,所以要reshape
就是Partition[BinaryReadList["test.dat", "Real32"], 20]
2018年04月22日 14点04分 7
这里real32就是4个字节的浮点数
2018年04月22日 14点04分
好的 谢谢 我试试
2018年04月22日 22点04分
小吧主你好,我试了您给我说的方法,为啥用BinaryReadList读取的数据跟import不一样呢?而且如果数据是两栏的,用BinaryReadLis读的仅有一栏,我在下面给您百度云链接,数据在里面,麻烦您看下
2018年05月11日 15点05分
如果二进制导入以后如何转换为10进制的数据啊?我后续要做傅里叶变换分析数据,需要用到十进制的数
2018年05月11日 15点05分
level 1
ixwind 楼主
2018年05月14日 07点05分 8
[无效] 什么数据类型?
2018年05月14日 09点05分
@wshzh1966 数据类型是flaot吗?存储顺序是小端序吗
2018年05月14日 09点05分
@wshzh1966 我现在压缩下,我不知道什么类型的 就是示波器储存的 数值很小 是指数形式
2018年05月15日 09点05分
level 1
ixwind 楼主
小吧主你好我按照你说的二进制方法读取,为啥跟存的十进制的数据不一样呢?求解。@wshzh1966
2018年08月14日 15点08分 10
这么大的数 很明显 端序问题 BinaryRead[file, "Integer32", ByteOrdering -> 1] 设置ByteOrdering参数 表示大端序
2018年08月17日 10点08分
@wshzh1966 好的 谢谢·
2018年08月17日 14点08分
1