簡體   English   中英

在 Python 上使用 Numba 的 Numpy 均值和標准差

[英]Numpy's mean and standard deviation with Numba on Python

我正在嘗試在 function 中使用 Numpy 的均值和標准差函數,它們似乎與 Numba 不兼容,盡管Numba 文檔將它們聲明為 compatible

我的代碼如下:

import numpy as np
import numba


a = [1, 2, 3, 4, 5, 6]

# @numba.jit(nopython=True, parallel=True)
def nmeanstd(a, n):
    b = []; c = []
    for i in range(n):
        b.append(np.mean(a))
        c.append(np.std(a))
    
    return b, c

mean, std = nmeanstd(a, 10)

output 在查看meanstd時是預期的:

mean
Out[31]: [3.5, 3.5, 3.5, 3.5, 3.5, 3.5, 3.5, 3.5, 3.5, 3.5]

std
Out[32]: 
[1.707825127659933,
 1.707825127659933,
 1.707825127659933,
 1.707825127659933,
 1.707825127659933,
 1.707825127659933,
 1.707825127659933,
 1.707825127659933,
 1.707825127659933,
 1.707825127659933]

但我不知道為什么,當我取消注釋@numba.jit function 時出現以下消息:

TypingError: No implementation of function Function(<function mean at 0x11a0e6e50>) found for signature:
 
mean(reflected list(int64)<iv=None>)
 
There are 2 candidate implementations:
      - Of which 2 did not match due to:
      Overload of function 'mean': File: numba/core/typing/npydecl.py: Line 378.
        With argument(s): '(reflected list(int64)<iv=None>)':
       No match.

During: resolving callee type: Function(<function mean at 0x11a0e6e50>)

如果我評論計算平均值的行, std也是如此。 怎么了? 我雖然他們會正確運行numba 您知道使用 Numba 計算均值和標准差的任何方法嗎?

錯誤消息顯示 Numba 不知道如何計算listmean 如果首先將輸入列表轉換為 numpy 數組,則您的代碼可以正常工作(使用@jit ):

mean, std = nmeanstd(np.array(a), 10)

文檔顯示 Numpy arrays 直接與 Numba 一起工作並且非常高效。

如果將“a”轉換為 numpy 數組 mean, std = nmeanstd(np.array(a), 10),則代碼有效

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM