相关疑难解决方法(0)

使用mathematica导入大文件/数组

我在Windows7 32位平台上使用mathematica 8.0.1.0.我尝试导入数据

Import[file,”Table”]
Run Code Online (Sandbox Code Playgroud)

只要文件(文件中的数组)足够小,它就可以正常工作.但是对于更大的文件(38MB)/阵列(9429乘2052),我得到的信息是:

No more memory available. Mathematica kernel has shut down. Try quitting other applications and then retry.
Run Code Online (Sandbox Code Playgroud)

在具有更多主内存的Windows7 64位平台上,我可以导入更大的文件,但我认为有一天,当文件增长/数组有更多行时,我会遇到同样的问题.

所以,我试图找到一个导入大文件的解决方案.在搜索了一段时间之后,我在这里看到了一个类似的问题:处理Wolfram Mathematica中的大数据文件的方法.但似乎我的mathematica知识不足以使建议的OpenRead,ReadList或类似的数据适应我的数据(参见这里的示例文件).问题是我需要文件中数组的其余程序信息,例如某些列和行中的Dimensions,Max/Min,我正在对某些列和每一行进行操作.但是当我使用例如ReadList时,我从来没有得到与我使用Import相同的数组信息(可能是因为我以错误的方式进行).

有人可以给我一些建议吗?我很感激每一个支持!

wolfram-mathematica

21
推荐指数
1
解决办法
7448
查看次数

Wolfram Mathematica中是否有HashTable结构?

我想使用像HashTable这样的结构.Wolfram Mathematica中是否有类似的结构?

wolfram-mathematica hashtable data-structures

17
推荐指数
3
解决办法
5624
查看次数

防止Mathematica中的运行时错误雪崩

当笔记本超出一些功能时我遇到的一个典型情况 - 我评估一个表达式,但是我得到了Beep而不是正确的答案,然后是几十个无用的警告,接着是"进一步输出...将被抑制"

我觉得有用的一件事 - 在函数内部使用类似Python的"断言"来强制内部一致性.还有其他提示吗?

Assert[expr_, msg_] := If[Not[expr], Print[msg]; Abort[], None]
Run Code Online (Sandbox Code Playgroud)

编辑11/14 警告雪崩的一般原因是子表达式评估为"坏"值.这会导致父表达式计算为"坏"值,并且此"不良"会一直传播到根目录.内置评估一路上注意到不良并产生警告."坏"可能意味着表达错误的头部,列表中的元素数量错误,负的确定矩阵而不是正定义等等.一般来说,它不适合父表达式的语义.

解决这个问题的一种方法是重新定义所有函数,以便在"输入错误"时返回未评估的值.这将处理内置函数生成的大多数消息.执行像"Part"这样的结构操作的内置函数仍将尝试评估您的值并可能产生警告.

将调试器设置为"中断消息"可以防止出现大量错误,尽管将其一直打开似乎有点过头了

wolfram-mathematica

13
推荐指数
2
解决办法
1386
查看次数

比Get ["raggedmatrix.mx"]更快的巨大数据导入?

任何人都可以建议从60个.mx文件列表中导入几个GB数字数据(以.mx格式),每个文件大约650 MByte?

- 太大而不能在这里发布 - 研究问题涉及简单的统计操作,其数据量是GB的两倍(大约34),而不是RAM(16).为了处理数据大小问题,我只是将事情拆分并使用Get/Clear策略进行数学计算.

它确实有效,但是调用Get["bigfile.mx"]需要相当长的时间,因此我想知道使用BLOB或者PostgreSQL或MySQL的任何内容,或者人们使用什么数据库来获取数字数据GB都会更快.

所以我的问题是:在Mathematica中处理真正大型数据集导入的最有效方法什么?

我还没有尝试过,但我认为DataBaseLink的SQLImport会慢于Get["bigfile.mx"].

谁有经验可以分享?

(对不起,如果这不是一个非常具体的编程问题,但它真的可以帮助我继续进行耗时的发现 - 找出最好的137种可能性 - 解决 - 一,问题的-数学).

wolfram-mathematica

10
推荐指数
1
解决办法
3362
查看次数

使用ReadList读取UTF-8文本文件

是否可以使用或仅ReadList使用ReadList[..., Word]ASCII 来读取UTF-8(或任何其他)编码的文本文件?如果它只是ASCII,是否可以"修复"已经读取的数据的编码具有良好的性能(即保留ReadList过度的性能优势Import)?

Import[..., CharacterEncoding -> "UTF8"]有效,但它比它慢了很多ReadList. $CharacterEncoding对...没有影响ReadList

在此处下载UTF-8编码文件样本.

要测试大输入的性能,请参阅此问题中的测试文件.


以下是大型文本文件的答案时间:

进口

In[2]:= Timing[
 data = Import[file, "Text"];
 ]

Out[2]= {5.234, Null}
Run Code Online (Sandbox Code Playgroud)

海克

In[4]:= Timing[
 data = ReadList[file, String];
 FromCharacterCode[ToCharacterCode[data], "UTF8"];
 ]

Out[4]= {4.328, Null}
Run Code Online (Sandbox Code Playgroud)

巫师先生

In[5]:= Timing[
 string = FromCharacterCode[BinaryReadList[file], "UTF-8"];
 ]

Out[5]= {2.281, Null}
Run Code Online (Sandbox Code Playgroud)

wolfram-mathematica

5
推荐指数
2
解决办法
644
查看次数