Octave isnan:使用 oct2py 时未定义错误

Octave isnan: not defined error using oct2py

使用 oct2py 在几个 (10MM+) 大小的数据帧上调用 corrcoef.m 到 return [R,P] 矩阵,为 ML 算法生成训练集。昨天,我的这个工作没问题。 运行 今天早上来自顶部的脚本,return 将相同的测试集 通过 oct2py 传递给 Octave。

我正在 returned:

Oct2PyError: Octave evaluation error:
error: isnan: not defined for cell
error: called from:
corrcoef at line 152, column 5
CorrCoefScript at line 1, column 7

首先,集合中没有 null/nan 个值。事实上,甚至没有任何零。任何列中都没有统一性,因此在 corrcoef 计算中没有 returned 的标准偏差。这在数学上是合理的。

其次,当我通过 GUI 将测试集加载到 Octave 并在相同的数据上执行相同的 .m 时,没有错误 returned,并且 [R,P] 矩阵与保存昨晚的输出。我测试了矩阵 var 是否通过 oct2py 正确地传递给了 Octave,并且 Octave 正在接收一个相同的矩阵。但是,oct2py 不能再执行 ANY .m with a nan check in the source code。上面的错误是 return 任何包含 .isnan 的 Octave 打包 .m 脚本。

对于 s&g,我修改了 .m 以接收矩阵 var 并将其写入平面文件,如下所示:

csvwrite ('filename', data);

这也失败并出现 fprintf 错误;如果我 运行 在 Octave GUI 内的相同数据集上使用相同的代码,工作正常。

我在这里不知所措。我用相同的结果更新了 conda、oct2py 和 Octave。同样,具有确切数据 运行 的确切代码在不到 24 小时前的表现符合预期。

我在 Jupyter Notebook 中使用以下代码进行测试:

%env OCTAVE_EXECUTABLE = F:\Octave\Octave-5.1.0.0\mingw32\bin\octave-cli-5.1.0.exe
import oct2py
from oct2py import octave

octave.addpath('F:\FinanceServer\Python\Secondary Docs\autotesting\atOctave_Scripts');
data = x
octave.push('data',data)
octave.eval('CorrCoefScript')
cmat = octave.pull('R')
enter code here

旁注 - 我只是在特定的 .ipynb 脚本中遇到这个问题。幸运的是,使用 oct2py 的其他脚本似乎没有受到影响。

已修复,但问题多于答案。我正在使用数据帧列表按类型循环,这样对于每次迭代 ix 是通过 x = dflst[i] 生成的。由于我无法理解的原因,随着时间的流逝,它失败了。但是,通过将我的循环写入自定义函数并显式调用该函数中的每个数据框,如下所示: oct_func(type1df) 我看到了预期的行为和期望的结果。但是,我仍然无法使用循环将数据帧传递给 oct_func()。因此,这是一个符合我的目的的创可贴解决方案,但令人沮丧的是无法扩展。

编辑: 如果遍历数据框的字典而不是列表,则循环工作正常。