stdlib

stdlib

JavaScript数值计算和科学计算标准库

stdlib是一个专注于数值计算和科学计算的JavaScript标准库。它提供了丰富的数学、统计、数据处理和流处理功能,包括150多个特殊数学函数、35种概率分布和40多个可重复的伪随机数生成器。stdlib采用可分解架构,支持自由组合API和功能。该项目提供全面的文档、测试和性能基准,确保代码质量。stdlib支持浏览器和Node.js环境,并提供TypeScript类型定义。

stdlibJavaScript数值计算标准库开源Github开源项目
<!-- Apache 2.0许可证 版权所有 (c) 2018 The Stdlib Authors。 根据Apache许可证2.0版("许可证")获得许可; 除非遵守许可证,否则您不得使用此文件。 您可以在以下位置获取许可证副本: http://www.apache.org/licenses/LICENSE-2.0 除非适用法律要求或书面同意,否则根据许可证分发的软件 是基于"按原样"分发的,不附带任何明示或暗示的担保或条件。 有关许可证下的特定语言管理权限和限制,请参阅许可证。 --> <!-- 禁用第一级标题 lint --> <!-- 包含公告的部分。如果包含该部分,请在该部分*后*添加一条水平线。确保在`section`元素后保留一个空行,在`/section`关闭前保留另一个空行。 --> <section class="announcement"> </section> <!-- /.announcement --> <!-- 包含资产(如项目徽标等)的部分。确保在`section`元素后保留一个空行,在`/section`关闭前保留另一个空行。 --> <section class="banner"> <div class="image" align="center"> <br> <br> <a href="https://stdlib.io/" /> <img src="https://yellow-cdn.veclightyear.com/835a84d5/610f14e4-80b7-4789-9470-559386f25381.svg" alt="stdlib logo"> </a> <br> <br> <br> <br> </div> </section> <!-- /.banner -->
<!-- 包含介绍文本的部分。确保在介绍`section`元素后保留一个空行,在`/section`关闭前保留另一个空行。 --> <section class="intro">

我们相信未来网络将成为数值计算的首选环境。为了实现这一未来,我们构建了stdlib。

stdlib([/ˈstændərd lɪb/][ipa-english] "standard lib")是一个标准库,专注于数值和科学计算,使用JavaScript(和C)编写,可在浏览器和Node.js中执行。该库提供了一系列强大、高性能的数学、统计、数据处理、流处理等库,并包含了您期望从标准库中获得的许多实用工具。

stdlib的与众不同之处在于其完全可分解的架构,让您可以根据自己的偏好和用例交换和混搭API和功能。

使用stdlib时,您可以确信您正在使用最全面、严谨、精心编写、经过研究、记录、测试、测量和高质量的代码。

想加入我们,将数值计算带到网络中吗?首先给项目加星吧。 :star2:

在这个GitHub仓库中探索stdlib的源代码和文档。有关开发stdlib的指导,请参阅[开发指南][stdlib-development]。

感谢您成为我们社区的一员!您的支持对我们来说无比珍贵!

资源

  • 安装
  • [主页][stdlib-homepage]
  • [文档][stdlib-documentation]
  • [源代码][stdlib-source]
  • [代码覆盖率][stdlib-code-coverage]
  • [常见问题][stdlib-faq]

外部资源

特性

  • 150多个特殊数学函数

    <div class="image" align="center"> <img src="https://yellow-cdn.veclightyear.com/835a84d5/00f24f4b-e7ce-447f-b590-024fed973dba.png" alt="展示特殊数学函数的演示"> </div>
  • 35多个概率分布,支持评估概率密度函数(PDF)、累积分布函数(CDF)、分位数、矩等。

    <div class="image" align="center"> <img src="https://yellow-cdn.veclightyear.com/835a84d5/b7571355-15f9-4ae0-91b0-75d586e76f6b.png" alt="展示概率分布的演示"> </div>
  • 40多个可设定种子的伪随机数生成器(PRNG)。

    <div class="image" align="center"> <img src="https://yellow-cdn.veclightyear.com/835a84d5/5f376f5d-bbc2-41e5-af5b-231b5031e15a.png" alt="展示PRNG的演示"> </div>
  • 200多个用于数据转换、函数式编程和异步控制流的通用实用工具

    <div class="image" align="center"> <img src="https://yellow-cdn.veclightyear.com/835a84d5/4e429d93-0b3e-4821-9a7e-7b99f8c74af5.png" alt="展示通用实用工具的演示"> </div>
  • 200多个用于数据验证和特性检测的断言实用工具

    <div class="image" align="center"> <img src="https://yellow-cdn.veclightyear.com/835a84d5/dcf60beb-1464-4e12-848d-6932b8c9fe17.png" alt="展示断言实用工具的演示"> </div>
  • 50多个用于测试和开发的样本数据集

    <div class="image" align="center"> <img src="https://yellow-cdn.veclightyear.com/835a84d5/ab995c25-88fd-4381-8700-d2b548de348e.png" alt="展示样本数据集的演示"> </div>
  • 用于数据可视化和探索性数据分析的绘图API

    <div class="image" align="center"> <img src="https://yellow-cdn.veclightyear.com/835a84d5/a135e096-4c8f-4e4e-b12c-c154e95af703.png" alt="展示绘图API的演示"> </div>
  • 用于与BLAS库接口的本地插件,具有纯JavaScript回退功能。

    <div class="image" align="center"> <img src="https://cdn.jsdelivr.net/gh/stdlib-js/stdlib@efede6af3ef957da08838903b0558441263adf85/docs/assets/readme/base_blas.png" alt="展示BLAS API的演示"> </div>
  • 支持TAP的基准测试框架

    <div class="image" align="center"> <img src="https://yellow-cdn.veclightyear.com/835a84d5/72608f5e-85c6-4b71-a987-c40d86a65104.gif" alt="展示基准测试框架的演示"> </div>
  • 具有集成帮助和示例的REPL环境。

    <div class="image" align="center"> <img src="https://yellow-cdn.veclightyear.com/835a84d5/d36ebf7d-14ea-4e57-b69a-fcd8de40e2e2.gif" alt="展示REPL环境的演示"> </div>
  • 可以使用BrowserifyWebpack和其他打包工具进行打包,以在Web浏览器中使用。

    <div class="image" align="center"> <img src="https://yellow-cdn.veclightyear.com/835a84d5/9a76c9ca-5b48-45b9-8d86-ef2ec0471abd.png" alt="展示浏览器支持的演示"> </div>
  • 每个函数都附带TypeScript声明文件,确保类型安全并在IDE中提供智能代码补全。

    <div class="image" align="center"> <img src="https://yellow-cdn.veclightyear.com/835a84d5/c3d8e1d4-bfb3-4704-a6ca-27a301eaadbd.png" alt="展示TypeScript声明文件的演示" > </div>

安装

为了适应各种使用场景,stdlib可以通过多种方式使用。首选的使用方法取决于您的具体用例。我们提供了一些用户故事来帮助您确定最佳方法。😃

虽然本项目的安装说明默认使用npm进行包管理,但通过其他包管理器(如yarn)进行安装应该只需将npm命令替换为相关包管理器的命令即可。

用户故事

  • 我想在JavaScript和Node.js中执行数据分析数据科学任务,类似于我可能使用Python、Julia、R和MATLAB的方式。

  • 我正在构建一个Web应用程序

    • 我计划使用BrowserifyWebpack和其他打包工具在Web浏览器中使用。

      • 安装单独的包。安装整个项目可能是不必要的,并会导致安装时间变长。
    • 我想打包一个包含各种stdlib功能的自定义bundle。

    • 我想通过简单使用script标签来包含stdlib功能。

  • 我想使用 ES 模块。

    • 使用单个包的 ES 模块构建
  • 我想使用预构建的捆绑包(可能通过 CDN,如 unpkgjsDelivr)。

  • 我对使用顶级 stdlib 命名空间中的大量功能感兴趣,不想单独安装数百个独立包(例如,构建在线计算器应用程序并想要 stdlib 的所有数学功能)。

    • 安装一个或多个顶级命名空间。安装整个项目可能是不必要的,会导致安装时间更长。安装顶级命名空间可能意味着安装永远不会使用的功能;但是,安装顶级命名空间可能比单独安装许多独立包更容易、耗时更少。

      在打包时,安装顶级命名空间不应成为问题,因为仍然可以独立地要求/导入单个功能。但是,项目安装时间可能会稍微慢一些。

  • 我正在构建一个 Node.js 服务器应用程序

    • 我对使用 stdlib 中的各种功能感兴趣。

      • 安装单个包。安装整个项目可能是不必要的,会导致安装时间更长。
    • 我想打包stdlib 功能并避免依赖树。

    • 我对使用顶级 stdlib 命名空间中的大量功能感兴趣,不想单独安装数百个独立包。

      • 安装一个或多个顶级命名空间。安装整个项目可能是不必要的,会导致安装时间更长。安装顶级命名空间可能意味着安装永远不会使用的功能;但是,安装顶级命名空间可能比单独安装许多独立包更容易、耗时更少。
  • 我正在使用 Deno

    • 使用预构建的 Deno 构建来导入单个包
  • 我想在 Observable 笔记本中使用 stdlib 功能。

  • 我想修改 stdlib,可能甚至创建自定义构建以链接到特定平台的本机库(如英特尔的 MKL 或其他数值库)。

    • 通过克隆此存储库并按照[开发指南][stdlib-development]中描述的[安装说明][stdlib-development]将项目安装为系统库

<a name="install_complete_library"></a>

完整库

要将整个项目安装为库或应用程序依赖项,

$ npm install @stdlib/stdlib

安装后,可以单独require/import stdlib 包以最小化加载时间并减小捆绑包大小。例如,使用 require:

var ndarray = require( '@stdlib/ndarray/array' ); var arr = ndarray( [ [ 1, 2 ], [ 3, 4 ] ] ); // 返回 <ndarray>

使用 import:

import ndarray from '@stdlib/ndarray/array'; var arr = ndarray( [ [ 1, 2 ], [ 3, 4 ] ] ); // 返回 <ndarray>

<a name="install_individual_packages"></a>

单个包

stdlib 的设计允许将主项目分解为可以独立使用的单个包。因此,项目用户可以避免安装所有项目功能,只安装他们需要的确切功能。

要安装单个包,请将 @stdlib/ 后的正斜杠 / 替换为连字符 -。例如,

$ npm install @stdlib/ndarray-array

安装后,可以require/import 单个包。例如,使用 require:

var ndarray = require( '@stdlib/ndarray-array' ); var arr = ndarray( [ [ 1, 2 ], [ 3, 4 ] ] ); // 返回 <ndarray>

使用 import:

import ndarray from '@stdlib/ndarray-array'; var arr = ndarray( [ [ 1, 2 ], [ 3, 4 ] ] ); // 返回 <ndarray>

<a name="install_namespaces"></a>

命名空间

stdlib 由各种顶级命名空间组成(即,由共同主题统一的相关功能集合)。例如,要安装顶级 math 命名空间中的所有数学功能,

$ npm install @stdlib/math

安装后,可以单独require/import 顶级命名空间内的包以最小化加载时间并减小捆绑包大小。例如,使用 require:

var sin = require( '@stdlib/math/base/special/sin' ); var v = sin( 3.14 ); // 返回 <number>

使用 import:

import sin from '@stdlib/math/base/special/sin'; var v = sin( 3.14 ); // 返回 <number>

注意:不支持安装顶级命名空间内的嵌套命名空间(例如, math/base)。考虑安装单个包或相关的顶级命名空间。

<a name="install_command_line_utility"></a>

命令行实用程序

要全局安装以用作命令行实用程序和/或使用 REPL,

$ npm install -g @stdlib/stdlib

这将暴露 stdlib 命令。例如,查看可用的子命令:

$ stdlib help

运行 REPL:

$ stdlib repl

<a name="install_env_builds"></a>

环境构建

<a name="install_env_builds_esm"></a>

ES 模块

要通过 <script> 标签使用 ES 模块,请使用每个包存储库中通过专用 esm 分支提供的 ES 模块构建(例如,请参阅 @stdlib/math-base-special-erfesm 分支)。例如,

<script type="module"> import linspace from 'https://cdn.jsdelivr.net/gh/stdlib-js/array-base-linspace@esm/index.mjs'; import erf from 'https://cdn.jsdelivr.net/gh/stdlib-js/math-base-special-erf@esm/index.mjs'; const x = linspace( -10.0, 10.0, 100 ); for ( let i = 0; i < x.length; i++ ) { console.log( 'x: %d, erf(x): %d', x[ i ], erf( x[ i ] ) ); } </script>

<a name="install_env_builds_deno"></a>

Deno

要在 Deno 中使用单个包,请使用每个包存储库中通过专用 deno 分支提供的 Deno 构建(例如,请参阅 @stdlib/ndarray-arraydeno 分支)。例如,

import ndarray from 'https://cdn.jsdelivr.net/gh/stdlib-js/ndarray-array@deno/mod.js'; var arr = ndarray( [ [ 1, 2 ], [ 3, 4 ] ] ); // 返回 <ndarray>

<a name="install_env_builds_jquery"></a>

类 jQuery 捆绑包

对于那些想要类 jQuery 捆绑包的人,可以使用每个包存储库中通过专用 umd 分支提供的预构建可分发 UMD 捆绑包,用于浏览器环境或作为服务器环境中的共享("打包")库。有关更多详细信息,请参阅 UMDNode.js 部分。

<a name="install_env_builds_umd"></a>

UMD

要通过 <script> 标签或在 Observable 中使用 UMD 捆绑包,请使用每个包存储库中通过专用 umd 分支提供的 UMD 浏览器构建(例如,请参阅 @stdlib/math-base-special-erfumd 分支)。例如,

<script type="text/javascript" src="https://cdn.jsdelivr.net/gh/stdlib-js/array-base-linspace@umd/browser.js"></script> <script type="text/javascript" src="https://cdn.jsdelivr.net/gh/stdlib-js/math-base-special-erf@umd/browser.js"></script> <script type="text/javascript"> (function () { var x = linspace( -10.0, 10.0, 100 ); for ( var i = 0; i < x.length; i++ ) { console.log( 'x: %d, erf(x): %d', x[ i ], erf( x[ i ] ) ); } })(); </script>

<a name="install_env_builds_nodejs"></a>

Node.js

打包 stdlib 功能并避免安装依赖树,请使用每个包存储库中通过专用 umd 分支提供的 UMD 服务器构建(例如,请参阅 @stdlib/math-base-special-erfumd 分支)。例如,

var linspace = require( '/path/to/vendor/umd/@stdlib/array-base-linspace' ); var erf = require( '/path/to/vendor/umd/@stdlib/math-base-special-erf' ); var x = linspace( -10.0, 10.0, 100 ); for ( var i = 0; i < x.length; i++ ) { console.log( 'x: %d, erf(x): %d', x[ i ], erf( x[ i ] ) ); }

<a name="install_custom_bundles"></a>

自定义捆绑包

根据项目需求创建自定义捆绑包,请按以下步骤操作:

  1. 按照开发指南中描述的下载、配置和安装说明进行操作。

  2. 进入本地安装目录。

  3. 运行以下命令以打印帮助文档,了解如何提供要捆绑的 stdlib 包名列表

    <!-- run-disable -->
    $ NODE_PATH=./lib/node_modules node ./bin/cli bundle-pkg-list -- -h
  4. 修改并运行上述命令,列出要捆绑的包

    <!-- run-disable -->
    $ NODE_PATH=./lib/node_modules node ./bin/cli bundle-pkg-list -- <pkg> <pkg> <pkg> ...

生成捆绑包后,可以通过 <script> 标签加载捆绑包,方法与上文描述的预构建 UMD 分发捆绑包相同。

<a name="install_system_library"></a>

系统库

要将其安装为系统库(例如,为了创建自定义构建),请按照开发指南中描述的下载、配置和安装说明进行操作。


先决条件

在 Node.js 中安装和运行 stdlib 需要以下先决条件:

  • Node.js:JavaScript 运行时(版本 >= 0.10
  • npm:包管理器(版本 > 2.7.0;如果 Node < 1.0.0,版本 > 2.7.0< 4.0.0;如果 Node <= 10.x.x,版本 > 2.7.0< 6.0.0

stdlib 中的大多数功能都是用 JavaScript 实现的,无需其他先决条件即可使用 stdlib(即您可以安全地避免安装任何其他先决条件);但是,一些实现尝试通过使用原生绑定和/或 WebAssembly 来获得性能优势。虽然需要运行 stdlib,因为每个 stdlib 实现都有 JavaScript 回退,但以下依赖项需要用于构建原生附加组件,包括链接到 BLAS 和 LAPACK 库:

  • GNU make:开发工具和任务运行器
  • GNU bash:兼容 sh 的 shell
  • gcc 和 g++ 或 Clang:C/C++ 编译和链接(g++ 版本 >= 4.8;clang 版本 >= 3.5,OS X 上的 Xcode 版本 >=8.3.1
  • gfortran:Fortran 编译和链接(版本 >= 4.8

虽然需要运行 stdlib,但以下依赖项需要用于自动下载外部库:

  • curl、wget 或 fetch(FreeBSD):用于下载远程资源的实用程序

以下外部库可以使用 make 自动从源代码下载和编译:

  • OpenBLAS:优化的 BLAS 库
  • Electron:跨平台桌面应用程序框架

贡献

首次贡献者?

  • 请参阅贡献指南。

已经是专家了?

  • Fork 存储库。

  • 克隆 fork 的存储库

    $ git clone --depth=1 https://github.com/<username>/stdlib.git

    其中 <username> 是您的 GitHub 用户名。

  • 进入 stdlib 目录

    $ cd stdlib
  • 安装依赖项

    $ make install-node-modules
  • 初始化您的 stdlib 开发环境

    $ make init

<section class="sponsors">

赞助商

stdlib 的开发得到了以下赞助商的慷慨支持:

<div class="image" align="center"> <br> <a href="https://labs.quansight.org/"> <img src="https://yellow-cdn.veclightyear.com/835a84d5/e8453055-66a3-4f8e-ab27-3446ccf0e302.png" alt="Quansight Labs"> </a> <br> <br> </div>

您有兴趣支持 stdlib 吗?如果是,请加入我们的 Open Collective!

</section>
<section class="users">

用户

以下组织和主要利益相关者信任并依赖 stdlib:

<div class="image" align="center"> <br> <a href="https://www.cmu.edu/"> <img src="https://cdn.jsdelivr.net/gh/stdlib-js/stdlib@1c8c7dbc9d081eeb13e16c62764f27a65c6553f8/docs/assets/misc/cmu_logo.png" alt="Carnegie Mellon University"> </a> <br> <br> </div>

您的组织使用 stdlib 吗?如果是,我们很乐意听到您的反馈!

</section>

治理

有关 stdlib 项目治理的信息,请参阅 GOVERNANCE.md。

许可证

请参阅 LICENSE。

版权

版权所有 © 2016-2024。Stdlib 作者。

</section>
<section class="badges">

状态

版本

git tag NPM version Node.js version

社区

[![Chat][chat-image]][chat-url]

</section> <section class="links"> </section> <!-- /.links -->

编辑推荐精选

Vora

Vora

免费创建高清无水印Sora视频

Vora是一个免费创建高清无水印Sora视频的AI工具

Refly.AI

Refly.AI

最适合小白的AI自动化工作流平台

无需编码,轻松生成可复用、可变现的AI自动化工作流

酷表ChatExcel

酷表ChatExcel

大模型驱动的Excel数据处理工具

基于大模型交互的表格处理系统,允许用户通过对话方式完成数据整理和可视化分析。系统采用机器学习算法解析用户指令,自动执行排序、公式计算和数据透视等操作,支持多种文件格式导入导出。数据处理响应速度保持在0.8秒以内,支持超过100万行数据的即时分析。

AI工具酷表ChatExcelAI智能客服AI营销产品使用教程
TRAE编程

TRAE编程

AI辅助编程,代码自动修复

Trae是一种自适应的集成开发环境(IDE),通过自动化和多元协作改变开发流程。利用Trae,团队能够更快速、精确地编写和部署代码,从而提高编程效率和项目交付速度。Trae具备上下文感知和代码自动完成功能,是提升开发效率的理想工具。

AI工具TraeAI IDE协作生产力转型热门
AIWritePaper论文写作

AIWritePaper论文写作

AI论文写作指导平台

AIWritePaper论文写作是一站式AI论文写作辅助工具,简化了选题、文献检索至论文撰写的整个过程。通过简单设定,平台可快速生成高质量论文大纲和全文,配合图表、参考文献等一应俱全,同时提供开题报告和答辩PPT等增值服务,保障数据安全,有效提升写作效率和论文质量。

AI辅助写作AI工具AI论文工具论文写作智能生成大纲数据安全AI助手热门
博思AIPPT

博思AIPPT

AI一键生成PPT,就用博思AIPPT!

博思AIPPT,新一代的AI生成PPT平台,支持智能生成PPT、AI美化PPT、文本&链接生成PPT、导入Word/PDF/Markdown文档生成PPT等,内置海量精美PPT模板,涵盖商务、教育、科技等不同风格,同时针对每个页面提供多种版式,一键自适应切换,完美适配各种办公场景。

AI办公办公工具AI工具博思AIPPTAI生成PPT智能排版海量精品模板AI创作热门
潮际好麦

潮际好麦

AI赋能电商视觉革命,一站式智能商拍平台

潮际好麦深耕服装行业,是国内AI试衣效果最好的软件。使用先进AIGC能力为电商卖家批量提供优质的、低成本的商拍图。合作品牌有Shein、Lazada、安踏、百丽等65个国内外头部品牌,以及国内10万+淘宝、天猫、京东等主流平台的品牌商家,为卖家节省将近85%的出图成本,提升约3倍出图效率,让品牌能够快速上架。

iTerms

iTerms

企业专属的AI法律顾问

iTerms是法大大集团旗下法律子品牌,基于最先进的大语言模型(LLM)、专业的法律知识库和强大的智能体架构,帮助企业扫清合规障碍,筑牢风控防线,成为您企业专属的AI法律顾问。

SimilarWeb流��量提升

SimilarWeb流量提升

稳定高效的流量提升解决方案,助力品牌曝光

稳定高效的流量提升解决方案,助力品牌曝光

Sora2视频免费生成

Sora2视频免费生成

最新版Sora2模型免费使用,一键生成无水印视频

最新版Sora2模型免费使用,一键生成无水印视频

下拉加载更多