<ruby id="bdb3f"></ruby>

    <p id="bdb3f"><cite id="bdb3f"></cite></p>

      <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
        <p id="bdb3f"><cite id="bdb3f"></cite></p>

          <pre id="bdb3f"></pre>
          <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

          <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
          <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

          <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                <ruby id="bdb3f"></ruby>

                ThinkChat2.0新版上線,更智能更精彩,支持會話、畫圖、視頻、閱讀、搜索等,送10W Token,即刻開啟你的AI之旅 廣告
                # 2.1。類型和簽名 > 原文: [http://numba.pydata.org/numba-doc/latest/reference/types.html](http://numba.pydata.org/numba-doc/latest/reference/types.html) ## 2.1.1。理由 作為優化編譯器,Numba 需要決定每個變量的類型以生成有效的機器代碼。 Python 的標準類型不夠精確,所以我們必須開發自己的細粒度類型系統。 在嘗試檢查 Numba 類型推斷的結果時,您會遇到 Numba 類型,用于[調試](envvars.html#numba-envvars)或[教育](../developer/architecture.html#architecture)目的。但是,如果提前編譯代碼 [](../user/pycc.html#pycc) ,則需要顯式使用類型。 ## 2.1.2。簽名 簽名指定函數的類型。確切地說允許哪種簽名取決于上下文( [AOT](../glossary.html#term-aot) 或 [JIT](../glossary.html#term-jit) 編譯),但簽名總是涉及 Numba 類型的一些表示,以指定函數參數的具體類型,如果需要,函數的返回類型。 一個示例函數簽名是字符串`"f8(i4, i4)"`(或等價的`"float64(int32, int32)"`),它指定一個函數,它接受兩個 32 位整數并返回一個雙精度浮點數。 ## 2.1.3。基本類型 最基本的類型可以通過簡單的表達式表達。下面的符號表示主`numba`模塊的屬性(因此,如果您讀取“boolean”,則表示符號可以作為`numba.boolean`訪問)。根據 Numpy 的慣例,許多類型都可以作為規范名稱和速記別名。 ### 2.1.3.1。數字 下表包含 Numba 當前定義的基本數字類型及其別名。 | 輸入名稱 | 速記 | 評論 | | --- | --- | --- | | 布爾 | B1 | 表示為一個字節 | | uint8,字節 | U1 | 8 位無符號字節 | | UINT16 | U2 | 16 位無符號整數 | | UINT32 | U4 | 32 位無符號整數 | | UINT64 | U8 | 64 位無符號整數 | | int8,char | I1 | 8 位有符號字節 | | INT16 | I2 | 16 位有符號整數 | | INT32 | I4 | 32 位有符號整數 | | Int64 的 | I8 | 64 位有符號整數 | | INTC | - | C int 大小的整數 | | uintc | - | C int 大小的無符號整數 | | INTP | - | 指針大小的整數 | | uintp | - | 指針大小的無符號整數 | | FLOAT32 | F4 | 單精度浮點數 | | float64,double | F8 | 雙精度浮點數 | | complex64 | C8 | 單精度復數 | | complex128 | C16 | 雙精度復數 | ### 2.1.3.2。數組 聲明數組類型的簡單方法是根據維數來下標基本類型。例如,一維單精度數組: ```py >>> numba.float32[:] array(float32, 1d, A) ``` 或相同底層類型的三維數組: ```py >>> numba.float32[:, :, :] array(float32, 3d, A) ``` 此語法定義沒有特定布局的數組類型(生成接受非連續和連續數組的代碼),但您可以通過在索引規范的開頭或結尾使用`::1`索引來指定特定的連續性: ```py >>> numba.float32[::1] array(float32, 1d, C) >>> numba.float32[:, :, ::1] array(float32, 3d, C) >>> numba.float32[::1, :, :] array(float32, 3d, F) ``` ### 2.1.3.3。其他類型 有些非數字類型不適合其他類別。 | 輸入名稱 | 評論 | | --- | --- | | 的 PyObject | 通用 Python 對象 | | voidptr | 原始指針,不能對它執行任何操作 | ## 2.1.4。高級類型 對于更高級的聲明,您必須顯式調用 Numba 提供的輔助函數或類。 警告 此處記錄的 API 不保證穩定。除非必要,否則建議讓 Numba 使用@jit 的[無簽名變量來推斷參數類型。](../user/jit.html#jit-lazy) ### 2.1.4.1。推論 ```py numba.typeof(value) ``` 創建一個 Numba 類型,準確描述給定的 Python _ 值 _。如果 [nopython 模式](../glossary.html#term-nopython-mode)不支持該值,則會引發`ValueError`。 ```py >>> numba.typeof(np.empty(3)) array(float64, 1d, C) >>> numba.typeof((1, 2.0)) (int64, float64) >>> numba.typeof([0]) reflected list(int64) ``` ### 2.1.4.2。 Numpy 標量 除了使用 [`typeof()`](#numba.typeof "numba.typeof") 之外,還可以以編程方式構造諸如結構化類型之類的非平凡標量。 ```py numba.from_dtype(dtype) ``` 創建與給定 Numpy _dtype_ 對應的 Numba 類型: ```py >>> struct_dtype = np.dtype([('row', np.float64), ('col', np.float64)]) >>> ty = numba.from_dtype(struct_dtype) >>> ty Record([('row', '<f8'), ('col', '<f8')]) >>> ty[:, :] unaligned array(Record([('row', '<f8'), ('col', '<f8')]), 2d, A) ``` ```py class numba.types.NPDatetime(unit) ``` 為給定 _ 單位 _ 的 Numpy 日期時間創建 Numba 類型。 _ 單位 _ 應該是 Numpy 識別的代碼中的一個字符串(例如`Y`,`M`,`D`等)。 ```py class numba.types.NPTimedelta(unit) ``` 為給定 _ 單位 _ 的 Numpy timedeltas 創建 Numba 類型。 _ 單位 _ 應該是 Numpy 識別的代碼中的一個字符串(例如`Y`,`M`,`D`等)。 也可以看看 Numpy [日期時間單位](http://docs.scipy.org/doc/numpy/reference/arrays.datetime.html#datetime-units)。 ### 2.1.4.3。數組 ```py class numba.types.Array(dtype, ndim, layout) ``` 創建一個數組類型。 _dtype_ 應該是 Numba 類型。 _ndim_ 是數組的維數(正整數)。 _ 布局 _ 是一個給出數組布局的字符串:`A`表示任何布局,`C`表示 C-contiguous,`F`表示 Fortran-contiguous。 ### 2.1.4.4。可選類型 ```py class numba.optional(typ) ``` 根據底層 Numba 類型 _typ_ 創建一個可選類型。可選類型將允許 _typ_ 或`None`的任何值。 ```py >>> @jit((optional(intp),)) ... def f(x): ... return x is not None ... >>> f(0) True >>> f(None) False ```
                  <ruby id="bdb3f"></ruby>

                  <p id="bdb3f"><cite id="bdb3f"></cite></p>

                    <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
                      <p id="bdb3f"><cite id="bdb3f"></cite></p>

                        <pre id="bdb3f"></pre>
                        <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

                        <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
                        <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

                        <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                              <ruby id="bdb3f"></ruby>

                              哎呀哎呀视频在线观看