错误对象数组目前不支持Python

时间:2018-05-25 19:28:36

标签: python arrays

import numpy as np
import math

time_decay_parameter = 0.055
h_column1_formula = np.repeat(1, 10)
h_column2_formula = []
h_column3_formula = []
for maturity in range(1,10):
h_column2_formula.append( (1-math.exp(- 
time_decay_parameter*maturity))/(time_decay_parameter*maturity))
h_column3_formula.append(((1-math.exp(- 
time_decay_parameter*maturity))/(time_decay_parameter*maturity))- 
math.exp(-time_decay_parameter*maturity))



h_column2_formula_array = np.asarray(h_column2_formula)
h_column3_formula_array = np.asarray(h_column3_formula)

h_matrix = np.array([h_column1_formula,h_column2_formula_array,h_column3_formula_array]).T
print(h_matrix)
ht_h = h_matrix.T@h_matrix

我得到的错误是以下

TypeError                                 Traceback (most recent call last)
<ipython-input-10-30a08b8e87fb> in <module>()
     17 print('HMATRIX \n')
     18 print(h_matrix)
---> 19 ht_h = h_matrix.T@h_matrix

TypeError: Object arrays are not currently supported

1 个答案:

答案 0 :(得分:0)

您遇到的问题是,当您尝试构建h_matrix数组时,它会发现它的所有行都没有相同的长度。 h_column1_formula数组的长度为10,其他数组的长度为9。

因此,不是使用数字dtype构建数组,而是使用dtype=object,因为它支持任意内容(包括不同大小的数组)。然而矩阵乘法运算符抱怨这一点,因为它不支持对象数组,只支持数字对象。

要解决此问题,您可能需要更改一些用于构建矩阵的代码。您应该更改循环中的range来电或np.repeat来电,以便数字正确排列。

我建议:

h_column1_formula = np.repeat(1, 9) # create an array with 9 values

或:

for maturity in range(1,11): # loop 10 times, 1-10