首页 > 解决方案 > TypeError:创建具有特定值的矩阵时,“numpy.float64”对象不可调用

问题描述

我收到以下代码的 TypeError: 'numpy.float64' object is not callable 错误:

M = 10
N = 2
vol = np.random.standard_normal((M+1,2))
rho = np.random.standard_normal((M+1,1))
gamma = np.array([0.1,0.2])
cho_matrix = np.zeros((M+1, N, N), dtype=np.float)
for t in range(1, M + 1):
    for i in range(0, N):
        for j in range(0, N):
            if j == i:
                cho_matrix[t,i,j] = vol[t,i]
            else:
                cho_matrix[t,i,j]= vol[t,i] * vol[t,j] * ((1 - gamma[i]**2)(1-gamma[j]**2))**(-1/2) * rho[t]

print(cho_matrix)

错误是:

---------------------------------------------------------------------------
TypeError                                 Traceback (most recent call last)
<ipython-input-137-ed6ff4869285> in <module>()
     11                 cho_matrix[t,i,j] = vol[t,i]
     12             else:
---> 13                 cho_matrix[t,i,j]= vol[t,i] * vol[t,j] * ((1 - gamma[i]**2)(1-gamma[j]**2))**(-1/2) * rho[t]
     14 
     15 print(cho_matrix)

TypeError: 'numpy.float64' object is not callable

在这段代码中,我首先尝试使用,N = 2但我需要扩展到更大的N. 谁能帮我解决代码问题?

标签: pythontypeerror

解决方案


这一点是问题:

(1 - gamma[i]**2)(1-gamma[j]**2)

您可能想要在这两个表达式之间添加一个乘号。

在常规数学符号中,我们可以编写(a)(b)并理解这意味着将 a 和 b 相乘,但在 Python 中您必须编写(a) * (b).


推荐阅读