python:TypeError:+:'numpy.ndarray'和'str'的不支持的操作数类型

时间:2016-05-22 07:50:55

标签: python string numpy model pickle

我想使用以下代码构建模型数据:

def modeldata(filename, ratingMatrix):
result={}
itemmatrix = matrixconvert(ratingMatrix)
current = 0
total = len(itemmatrix)

for item in itemmatrix:
    current+=1
    if current%100--0: print ("%d / %d" % (current,total))

    result[item] = neighbor
    #print result

with open(filename+".csv", "wb") as f:
    pickle.dump(result, f)

filename变量是来自群集过程的数据结果,其中包含userid,itemid和rating, `then ratingMatrix是一个包含密钥(用户),子密钥(项目)和评级

的字典
10 dict 1 {'255': 3.0}

。邻居包含相似性数据。

0 tuple 2 (1.0, '9790')

我想使用上面的内容构建模型数据,我使用此代码运行函数

modeldata(filename, ratingMatrix)

但是,我收到了这个错误:

1 / 306
.
.
304 / 306
305 / 306
306 / 306
Traceback (most recent call last):

  File "<ipython-input-29-5af8931a8f1e>", line 1, in <module>
    modeldata(filename, ratingMatrix)

  File "<ipython-input-28-220883448026>", line 14, in modeldata
    with open(filename+".txt", "wb") as f:

TypeError: unsupported operand type(s) for +: 'numpy.ndarray' and 'str'

你知道这段代码有什么问题吗?错误来自何处,以及如何使其发挥作用?

感谢您的帮助......

1 个答案:

答案 0 :(得分:0)

您获得的错误在modeldata函数中,更具体地说是用于写入文件的开始语句。该错误表明你不能使用“+”字符串“.txt”添加到“numpy.ndarray”,它看起来像是来自变量文件名。确保您的filename变量是您要写入的实际文件名而不是numpy数组。