0
考虑以下几点:用Cython/numpy的:浮子可截断
import numpy as np
cimport numpy as np
DTYPE = np.float
ctypedef np.float_t DTYPE_t
def do(np.ndarray[DTYPE_t, ndim=2] hlc, int days=2):
cdef float dvu = 0.0
cdef Py_ssize_t N = np.shape(hlc)[1]-1, i, j, k
cdef np.ndarray[DTYPE_t] h = hlc[0]
cdef np.ndarray[DTYPE_t] l = hlc[1]
cdef np.ndarray[DTYPE_t] output = np.empty(N+1, dtype=np.float)
for i from 0 <= i <= days-1:
output[i] = np.NaN
for j from N >= j >= days-1:
for k from j >= k >= j-days+1:
dvu += ((h[k] + l[k])/2.0) - 1.0
print dvu # prints a float
output[j] = dvu/days
dvu = 0.0
return output
当我普林了DVU声明,我得到一个未四舍五入的浮点数。当我将该值设置为输出[j]并返回输出时,所有值都被舍入。我需要用完整的浮点数返回输出 - 四舍五入。任何想法我做错了什么?
'np.float'对应于C数据类型'double',而不是'float' - 不知道这是你的错误,但至少这是一个值得注意的警告。 –
我将“DTYPE”和“DTYPE_t”分别更改为“np.double”和“np.double_t”。它没有解决问题,但感谢提醒。 –