AttributeError:'numpy.float64'对象没有属性'to\u numpy'

2024-06-26 18:08:48 发布

您现在位置:Python中文网/ 问答频道 /正文

我对Python非常陌生,我不明白为什么会发生这种错误。 以下是我编写的代码:

var_1 = pd.DataFrame({'Vcond':[], 'Rsquared':[]})

for j in clim :
    varj = Cmean.loc[j][j]
    varz = Cmean.loc['Zi']['Zi']
    covzj = Cmean.loc['Zi'][j]
    B = np.linalg.inv(varj.to_numpy())
    Vcondj = varz-covzj @ B @ covzj
    Rsquared = (varz - Vcondj)/varz 
    var_1.loc[j]={'Vcond': Vcondj, 'Rsquared': Rsquared}

print(var_1)

错误是:

AttributeError: 'numpy.float64' object has no attribute 'to_numpy'

我的老师说用.to_numpy()这个方法来计算矩阵的逆,但它似乎不起作用。任何帮助都将不胜感激


Tags: to代码numpyvar错误loczi陌生
2条回答

对于我从另一个问题中剩下的df数据帧:

In [907]: type(df)                                                                                     
Out[907]: pandas.core.frame.DataFrame
In [908]: type(df.loc[1])                                                                              
Out[908]: pandas.core.series.Series
In [909]: type(df.loc[1][1])                                                                           
Out[909]: numpy.int64

查看连续的loc索引步骤如何给出一个Series和一个数值

dataframe的to_numpy方法生成一个2d数组:

In [912]: df.to_numpy().shape                                                                          
Out[912]: (22, 2)

应用于该系列,我们得到一个1d阵列:

In [913]: df.loc[1].to_numpy()                                                                         
Out[913]: array([28, 13])

但正如你的错误所显示的,就是这样。np.floatobject does not have ato_numpymethod. It already is anumpy`对象

在编写这样的代码时,您应该知道每个步骤生成的对象类型。并准备好测试这些知识。错误的猜测会产生错误

varj似乎属于numpy.float64类型,因此无法再将其转换为numpy数据类型。由于您提到要使用to_numpy来反转矩阵,因此您可能希望将其应用于数据帧

相关问题 更多 >