首页 > 解决方案 > numjs 相当于 javascript 中的 numpy 吗?它的工作依赖是什么?

问题描述

我正在编写相当于python代码的js来对像numpy.std(rgb_channel)这样的图像执行一些操作。图像的加载和获取其数据由 opencv.js ( https://docs.opencv.org/3.4/d0/d84/tutorial_js_usage.html )完成

目前,我坚持编写这段代码: numpy.std(image, axis=2)计算图像 rgb 通道的标准偏差。

我的问题是:为了用 javascript 编写这段代码,我应该使用 numjs 节点模块吗?我也得到了 numjs 的源代码(https://github.com/nicolaspanel/numjs)。这是 numjs 中的 std 函数:

NdArray.prototype.std = function (options) {
  options = _.defaults(options, { 'ddof': 0 });
  var squares = this.clone();
  ops.powseq(squares.selection, 2);
  var mean = this.mean();
  var shapeSize = _.shapeSize(this.shape);
  var variance = ops.sum(squares.selection) / (shapeSize - options.ddof) - mean * mean * shapeSize / (shapeSize - options.ddof);

  return variance > 0 ? Math.sqrt(Math.abs(variance)) : 0;
};

另一个问题是:安装 numjs 会引发一些错误,例如:gyp ERR!堆栈错误和与 MSBuild.exe 相关的错误,也找不到 python。如果numjs是纯js代码,为什么要安装这些包。顺便说一句,我安装了python,MSBuild.exe 2017(根据https://www.npmjs.com/package/node-gyp),仍然得到一堆错误,如:尖锐节点模块(npm ERR! Failed at the sharp@0.20.8 install script.)和
gyp ERR! stack Error: `C:\Program Files (x86)\Microsoft Visual Studio\2017\BuildTools\MSBuild\15.0\Bin\MSBuild.exe` failed with exit code: 1

标签: javascriptnode.js

解决方案


numjs' 依赖项在此处列出,https://www.npmjs.com/package/numjs。它们中的大多数是纯 JavaScript,但sharp使用了一些本机代码(因此您会看到 gyp 编译错误),并用于numjs.

如果不需要这个numjs功能,可以考虑我发布的https://www.npmjs.com/package/@d4c/numjs。它删除了可能导致安装错误的图像处理功能,并添加了一些 TypeScript 输入。

为了回答您最初的问题,它是NumPyJavaScript 的一个更轻量级的版本,并且没有提供一些NumPy功能。


推荐阅读