如何理解numba中数据类型定义中的[]

How to understand [] in data type definition in numba

我正在查看 python 使用 numba 的代码,并有一些问题。 numba的教程比较少,特地过来问一下

在numba中,数据类型是预先声明的,以帮助处理。我不清楚声明数据类型的规则。一个例子是 numba.float64[:,::1]。我觉得它正在声明一个 float 类型的二维数组。但是,我不确定 ::1 在这里意味着什么。另一个例子是nb.types.NPDatetime('M')[::1]。是对一维数组进行切片吗?

我对从 numba.types 导入的 ListType() 仍有疑问。这里只允许一个元素?在我的代码中,一个 class 类型被保存并作为单个参数传递给 ListType() 。如果我需要显式定义此 class 类型,并将其传递到此处怎么办?谢谢。

感觉numba模块的教程或文档很少。如果没问题,请在 numba 上分享一些资源。非常感谢。

One example is numba.float64[:,::1]. I feel it's declaring a 2D array in float type. However, I'm not sure what ::1 means here

没错。 ::1表示数组轴连续。这可以实现进一步的优化,例如使用 SIMD 指令。

Another example is nb.types.NPDatetime('M')[::1]. Is it slicing the 1D array?

nb.types.NPDatetime('M') 是 Numpy 日期时间类型(其中 'M' 用于指定日期时间的 粒度 。例如月份)和 [::1] 表示这是一维连续数组(包含日期时间对象)。

不应混淆对象 实例 和对象 类型 。在 Python 中,将两者混合使用是很常见的,但这是由于语言的动态特性。 Statically-typed 像 C 或 C++ 这样的编译语言清楚地将这两个概念和类型分开,不能在运行时操作。

Only one element is allowed here?

ListType 是一个 class 表示类型列表的类型。它的 唯一参数 定义了列表结果类型中项目的类型。例如 nb.types.ListType(nb.types.int32) returns 表示包含 32 位整数的类型化列表类型的对象。请注意,它 不是 列表实例。它旨在提供给 Numba 签名或其他类型。