问题标签 [numsharp]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
c# - 与显式类型参数相比,使用“object”参数时的 C# NumSharp 未定义行为
我正在使用NumSharp并且对它有点陌生。我想设置多个数据值,主要关注两个功能:
第一个SetValue
期望单个值元素的完整索引,例如,如果您拥有np.zeros(3,3)
它期望完整索引,并且如果缺少索引,它将使用0
它的位置。
例如:
两条线是等价的。
另一方面,SetData
将根据索引修改整个子数组,如果给出完整索引,它的工作方式类似于SetValue
. 例如:
现在,对于我的用例,我想重新定义一个接受多个值并将每个值视为子数组索引的函数。
自然,我选择了一种扩展方法:
但这就是完全失去我的地方。此代码不使用扩展方法,有效:
输出:
[[10, 10, 10],[10, 10, 10],[0, 0, 0]]
此代码不会:
输出:
[[10, 0, 0],[0, 0, 0],[0, 0, 0]]
这并不总是会打印,在大多数情况下它只是无法打印,我相信底层arr
结构已相应损坏,当我多次运行它时会导致未定义的行为。
现在,最后一点。当我将Extension
方法更改为 acceptdouble
而不是 时object
,它可以完美运行。但是我需要扩展方法来处理多种类型,因为它只是SetData
. 鉴于此,我还尝试将方法更改为通用:
当这不起作用并产生相同的输出时,我感到震惊。基本上,我进行了从对象到类型的显式转换。我这样调用函数:我使用调试器并比较了与它一起工作的代码,类型与传递给给定andarr.SetMultiData<double>(value, indicies);
的类型完全相同,但一个有效,一个无效。arr.SetValue
i = int
val = double
是什么导致了这种行为?为什么当我明确地将它设置为double
使用泛型/object
类型都失败时它会起作用?
作为参考,这里是SetData
实现。这是开源的。
c# - CSharp:无法读取 LARGE .npy 文件。例外是“NumSharp.dll 算术运算导致溢出”。
我正在尝试在 CSharp 中读取一个大的 .npy 文件。为了做到这一点,我正在尝试使用NumSharp nuget。
该文件是 7GB 锯齿状浮点数组 (float[][])。它有大约 100 万个向量,每个向量都是 960 维。
注意: 更具体地说,我使用的数据是来自以下链接Approximate Nearest Neighbors Large datasets的 GIST 。
以下是我用来加载数据的方法,但它失败并出现异常:
例外是:
引发异常:NumSharp.dll 中的“System.OverflowException” NumSharp.dll 中发生“System.OverflowException”类型的未处理异常算术运算导致溢出。
我该如何解决这个问题?
更新
如果文件太大,NumSharp 包有限制。阅读下面的评论/答案以获得更多解释。我添加了一个带有解决方法建议的答案
但是,一个好的选择是将数据保存为 .npz(请参阅:numpy.savez()),然后以下包可以完成这项工作:
https://github.com/matajoh/libnpy
代码示例:
c# - NumSharp 对应的 numpy.c_ 是什么?
我正在将python的 tensorflow 程序翻译成C#。而且我不知道如何处理这种方法。我搜索,但NumSharp文档启用的文档似乎很差(如果我忽略了,请指出我的发现)。
您能帮我找出Numsharp中存在相同的方法或其他具有相同效果的方法吗?
先谢过~