【发布时间】:2019-08-21 20:17:24
【问题描述】:
我有这个任务需要解决:
界面
def roundGrade(grades):
# Insert your code here
return gradesRounded
输入参数
grades:一个向量(每个元素是一个介于 -3 和 12 之间的数字)。
返回值
gradesRounded:一个向量(每个元素都是一个 7 步长的数字)。
说明
该函数必须对向量等级中的每个元素进行四舍五入,并返回 7 步尺度上最接近的等级:
7-step-scale: Grades 12 10 7 4 02 00 −3
例如,如果函数将向量 [8.2, -0.5] 作为输入,它必须返回四舍五入的等级 [7, 0],这是评分等级上最接近的数字。
我已经尝试了以下代码:
import numpy as np
def roundGrade(grades):
trueGrades = np.array([12, 10, 7, 4, 2, 0, -3])
matrix = np.array([trueGrades, (len(grades)), 1])
index = np.argmin(np.abs(matrix.T - grades), axis=0)
gradesRounded = trueGrades[index]
return gradesRounded
当我逐行运行代码时,出现以下错误:
index = np.argmin(np.abs(matrix.T - grades), axis=0)
ValueError: operands could not be broadcast together with shapes (3,) (100,)
我该如何解决这个问题?
【问题讨论】:
-
尝试打印出
matrix和grades的形状... -
那是因为
matrix内部函数定义的形状是3行1列。并且传递给函数的grades是100,它们应该具有相同的大小以进行算术运算,例如matrix.T - 等级