仅将此功能应用于2D numpy矩阵矢量运算

时间:2018-12-29 05:17:28

标签: python-3.x numpy

伙计们,我有这个功能

def averageRating(a,b):
  avg = (float(a)+float(b))/2
  return round(avg/25)*25

目前,我正在遍历我的np数组,这只是一个具有数值的2D数组。我想要做的是将“ a”作为第一个数组,将“ b”作为第二个数组,并获取每行的平均值,而我想要返回的只是一个带有值的数组。我使用过平均值,但找不到编辑它的方法,并且没有round()部分或多个(​​avg * 25)/ 25。 我的目标是摆脱循环,并由于循环的缓慢性而将其替换为矢量化操作。 对不起,python和numpy的新问题。

2 个答案:

答案 0 :(得分:0)

def averageRating(a,b):

averages = []
for i in range( len(a) ):
    averages.append( (a[i] + b[i]) / 2 )

return averages

赋予数组相同的长度,这应该是一个简单的解决方法。

这不能消除对for循环的使用,但是,它在计算上比当前方法便宜。

答案 1 :(得分:0)

def averageRating(a,b):
    avg = (np.average(a,axis=1) + np.average(b,axis=1))/2
    return np.round(avg,0)

如果我正确理解了这个问题,这应该可以满足您的需求。在np.average中指定axis = 1将给出行的平均值(axis = 0将是列的平均值)。并且np.round中的0将四舍五入到小数点后0位,更改它将更改您四舍五入到的小数位数。希望有帮助!