Я, возможно, неправильно понимаю ваши намерения, но из того, что я могу сказать, вы ничего не ищите и не ищите, поэтому нет никаких причин переходить от numpy к пандам (это просто действительно хорошо одетый набор numpy),Вместо этого вам следует взглянуть на векторизованные операции, которые предоставляет numpy.
Опять же, я не совсем понимаю вашу конечную цель, поскольку вы не предоставили вывод, но приближается ли это к тому, что вам нужно?
v = 8
gf = 2.5
a=np.random.randint(5,10,(21,5))
b=np.random.randint(5,10,(21,5))
c=2*(a+b)/2/v/gf
c
array([[0.9 , 0.75, 0.75, 0.6 , 0.65],
[0.75, 0.65, 0.5 , 0.9 , 0.75],
[0.7 , 0.6 , 0.75, 0.75, 0.85],
[0.6 , 0.6 , 0.7 , 0.8 , 0.7 ],
[0.6 , 0.75, 0.9 , 0.8 , 0.8 ],
[0.85, 0.65, 0.65, 0.7 , 0.65],
[0.65, 0.65, 0.65, 0.55, 0.7 ],
[0.5 , 0.7 , 0.7 , 0.55, 0.6 ],
[0.65, 0.6 , 0.8 , 0.9 , 0.7 ],
[0.65, 0.7 , 0.55, 0.6 , 0.8 ],
[0.75, 0.55, 0.75, 0.7 , 0.65],
[0.8 , 0.7 , 0.65, 0.7 , 0.55],
[0.55, 0.8 , 0.6 , 0.6 , 0.7 ],
[0.8 , 0.75, 0.7 , 0.85, 0.7 ],
[0.7 , 0.55, 0.75, 0.7 , 0.55],
[0.6 , 0.7 , 0.7 , 0.6 , 0.65],
[0.55, 0.8 , 0.7 , 0.6 , 0.75],
[0.65, 0.75, 0.7 , 0.65, 0.6 ],
[0.8 , 0.85, 0.7 , 0.8 , 0.7 ],
[0.85, 0.8 , 0.55, 0.6 , 0.8 ],
[0.8 , 0.8 , 0.75, 0.7 , 0.7 ]])