我有一个1024x1024双矩阵(即8mb阵列),我需要在javascript应用程序中使用。
我发现使用sylvester对于操作矩阵非常有用。我现在的问题只是找到一种将这个数组加载到网页中的有效方法。
将二进制数据加载到javascript中似乎相当繁琐。我认为使用图像作为转移的意思,但它似乎也很乏味......
为了记录,它是一个numpy ndarray,所以我可以很容易地从Python中使用这种格式。
感谢。
编辑:现在我将我的原始数组作为字符串转储并使用Binary Parser by JSFromHell进行解析,但它真的,非常,慢......
答案 0 :(得分:2)
如何使用mod_gzip或等效的压缩json。让浏览器解压缩它。
答案 1 :(得分:2)
最好的方法是支持二进制的XMLHttpRequest,请参阅https://developer.mozilla.org/En/Using_XMLHttpRequest#Receiving_binary_data_using_JavaScript_typed_arrays。您可以将数据直接加载到Float64Array
中,而且速度非常快。缺点:规范直到最近才最终确定(正如你所看到的,Firefox 4/5实现了一种方法,而Firefox 6将使用另一种方法)并且它目前仅由Firefox和Chrome实现(Chrome与Firefox的工作方式相同) 6)。因此,如果性能非常重要,您可以尽可能使用此方法(XMLHttpRequest
具有responseType
或mozResponseArrayBuffer
属性),否则将回退到慢速代码。希望是大多数人很快就会更新他们的浏览器并采取快速路线。
答案 2 :(得分:1)
将其打印为简单的JSON,即JS数组:
[[1,2,3],
[4,5,6],
[7,8,9]]
如果您在<script>
标记内打印,可以将其传递给变量:
var matrix = [...];
如果通过AJAX加载,则通过eval()
:
var matrix = eval( '(' + xhr.responseText + ')' );
我认为没有什么能比浏览器的JS解析器更快地将字符串转换为数组。