最后一步了,它老说切片错误,查了很多都是这个错误,求指导,求指导
4条回答 默认 最新
关注 引自免费微信小程序:皆我百晓生
在您提供的代码中,错误提示是
'TypeError: 'ellipsis' object is not subscriptable
,这表明predicts
变量不是一个可以进行切片操作的数组或矩阵对象,而是Python中的Ellipsis
对象。在TensorFlow或者其他numpy-like库中,通常使用...
或Ellipsis
来表示选取所有可能的维度,但它不能直接与整数索引结合使用。从您的意图来看,您应该是想根据用户输入的编号,找到该用户对应的预测评分,并对电影进行排序。因此,我们需要确保
predicts
是一个二维数组,并且能够通过指定的用户ID进行切片访问。请检查以下几点:
- 确保
predicts
是一个2D张量或numpy数组,其第一维代表不同的用户,第二维代表不同的电影。 - 用户ID输入转换成整数后,它应该是一个有效的索引,即小于等于
predicts
第一维的大小。
修正后的代码应为:
# 假设 predicts 是一个 (n_users, n_movies) 形状的 numpy 数组或 TensorFlow 张量 user_id = int(input(u'您要想哪位用户进行推荐?请输入用户编号:')) # 检查用户编号的有效性 if 0 <= user_id < predicts.shape[0]: sortedResult = predicts[user_id, :].argsort()[::-1] print(u'为该用户推荐的评分最高的20部电影是: '.center(80, '=')) idx = 0 for i in sortedResult: print(u'评分: %.2f, 电影名: %s' % (predicts[user_id, i] - 2, movies_df.iloc[i]['title'])) idx += 1 if idx == 20: break else: print("输入的用户编号无效,请输入一个介于0和{}之间的整数".format(predicts.shape[0] - 1))
这段代码首先会确认输入的用户ID是否有效,然后对相应用户的所有电影预测评分进行降序排序,并输出前20部评分最高的电影信息。如果
predicts
不是numpy数组,而是一个TensorFlow tensor,在使用时需要将其转换成numpy格式或者在TensorFlow环境下执行相应的计算操作。本回答被题主选为最佳回答 , 对您是否有帮助呢?解决 无用评论 打赏 举报 编辑记录- 确保
悬赏问题
- ¥15 关于#.net#的问题:End Function
- ¥50 用AT89C52单片机设计一个温度测量与控制电路
- ¥15 无法import pycausal
- ¥15 VS2022创建MVC framework提示:预安装的程序包具有对缺少的注册表值的引用
- ¥15 weditor无法连接模拟器Local server not started, start with?
- ¥20 6-3 String类定义
- ¥15 嵌入式--定时器使用
- ¥20 51单片机学习中的问题
- ¥30 Windows Server 2016利用兩張網卡處理兩個不同網絡
- ¥15 Python中knn问题