'numpy.float64'对象不支持项目分配

时间:2018-07-26 07:22:15

标签: python pandas numpy dataframe typeerror

我在Kaggle网站https://www.kaggle.com/PromptCloudHQ/imdb-data中有“ 2006年至2016年的IMDB数据”数据框。 我已经将其作为numpy数组,但是当我要将其两行的内积分配给numpy.float64变量时,它给了我这个错误:

sim[i][1] = np.inner(vec[i],vec[1])
TypeError: 'numpy.float64' object does not support item assignment

这是我的代码:

X = trainset.drop(['Description', 'Runtime','Director','Title', 'ID'], axis=1)
X.Revenue = X.Revenue.fillna(X.Revenue.mean())
X.Metascore= X.Metascore.fillna(X.Revenue.min())
features = ['Genre','Actors']
for f in features:
    X_dummy = X[f].str.get_dummies(',').add_prefix(f + '.')
    X = X.drop([f], axis = 1)
    X = pd.concat((X, X_dummy), axis = 1)
vec = np.ones((1000,2422), dtype=np.uint8)
vec = X.values
sim = np.ones((1000,1), dtype=np.float64)
for i in range (1,1000):
    sim[i][1] = np.inner(vec[i],vec[1])

当我得到这个内部产品的类型时,它恰好给了我这种类型:

>>chi = np.inner(vec[0],vec[0])
>>print(type(chi))
<class 'numpy.float64'>

1 个答案:

答案 0 :(得分:0)

我发现了此问题的发生方式,已将float变量分配给数组,但是当我将 fillna mean 函数一起使用时,在内部产品中它返回一些< strong> complex 变量,因此我将数组类型更改为以下形式:

sim = np.ones((1000,1), dtype=np.complex_)

问题已经解决。