[英]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 在查看mean
和std
時是預期的:
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 不知道如何計算list
的mean
。 如果首先將輸入列表轉換為 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.