Skip to content

Latest commit

 

History

History
117 lines (82 loc) · 4.07 KB

readme_zhs.md

File metadata and controls

117 lines (82 loc) · 4.07 KB

Logo

NuMojo

NuMojo 是为 Mojo 🔥 设计的多维数组运算库,类似 Python 中的 NumPy, SciPy。


关于本项目

NuMojo,旨在为 Mojo 语言生态系统提供数值计算和多维数组运算功能,类似于 NumPy、SciPy 和 Scikit 等数学库在 Python 语言生态系统中所扮演的角色。

NuMojo 充分利用 Mojo 的潜力,包括向量化、并行化和 GPU 加速。目前,NuMojo 扩展了大部分 Mojo 标准库中的数学函数,用以处理多维数组。

NuMojo 也可为其他需要高速数值计算、多维数组运算等功能的 Mojo 第三方库提供基础类型和函数。

注意:NuMojo 不是一个机器学习库,它永远不会在核心库中包含机器学习算法。

目标及路线图

有关本项目详细的路线图,请参阅 Roadmap.md 文件(英文)。

我们的核心目标,是使用 Mojo 实现一个快速、全面的数值计算库。以下是部分长期目标:

  • 原生 N 维数组类型
  • 向量化、并行化的数值运算
  • 线性代数
  • 数组操作:叠加、切片、拼合等
  • 微积分
  • 优化
  • 函数逼近和估值
  • 排序

使用方法

以下为部分代码实例:

import numojo as nm
from numojo.prelude import *

fn main() raises:
    # 生成两个 1000x1000 矩阵,数值随机且为 64 位浮点数
    var A = nm.random.randn[f64](shape=List[Int](1000, 1000))
    var B = nm.random.randn[f64](shape=List[Int](1000, 1000))

    # 根据字符串生成 3x2 矩阵,数据类型为 32 位浮点数
    var X = nm.fromstring[f32]("[[1.1, -0.32, 1], [0.1, -3, 2.124]]")

    # 打印矩阵
    print(A)

    # 矩阵相乘
    var C = A @ B

    # 矩阵求逆
    var I = nm.inv(A)

    # 矩阵切片
    var A_slice = A[1:3, 4:19]

    # 提取矩阵元素
    var A_item = A.item(291, 141)

请在 此文档 中查询所有可用的函数。

安装方法

Numojo 库可通过两种方法安装并使用。

构建文件包

这种方法会构建一个独立文件包 numojo.mojopkg。步骤为:

  1. 克隆本仓库。
  2. 在控制台使用 mojo package numojo 命令构建文件包。
  3. numojo.mojopkg 移动到包含代码的目录中,即可使用。

将 NuMojo 路径添加至编译器和 LSP

这种方法不需要生成文件包,仅需在编译时,通过以下命令指明 Numojo 的文件路径:

mojo run -I "../NuMojo" example.mojo

这种方法自由度更高,允许你在调试你代码的过程中修改 NuMojo 源码。它适合想要为本库贡献代码的用户。

为了使 VSCode 的 LSP (语言服务引擎)解析 numojo 库,你可以:

  1. 进入 VSCode 的 Preference 页面(偏好设置)。
  2. 选择 Mojo › Lsp: Include Dirs
  3. 点击 add item,并添加 NuMojo 源码所在的路径,例如 /Users/Name/Programs/NuMojo
  4. 重启 Mojo LSP server

如此,VSCode 便可以提供 NuMojo 包的函数提示。