Поскольку каждый элемент y соответствует элементу v в том же индексе (который является желаемым значением x), вы можете использовать enumerate
, чтобы дать вам индекс каждого значения и распечатать соответствующий x
а не весь вектор:
def most_probable_speed(v,m,T):
'''determine the most probable speed of a given mass and temperature'''
x = Maxwell_Boltzmann(v, m, T) #put the y values of Maxwel_B for all x in an array named x
highest_probability = np.amax(x) #Return the maximum value of y
# I want to print the value of v for whcih Maxwell_Boltzmann(v, m, T)= highest_probability
for idx, a in enumerate(Maxwell_Boltzmann(v, m, T)):
if a == highest_probability:
print(v[idx])
else:
continue
Однако вы дважды вызываете функцию Maxwell_Boltzmann. Если вы просто хотите найти x, соответствующий наивысшему значению y, вы можете сделать это гораздо эффективнее следующим образом:
def most_probable_speed(v,m,T):
'''determine the most probable speed of a given mass and temperature'''
x = Maxwell_Boltzmann(v, m, T) #put the y values of Maxwel_B for all x in an array named x
highest_probability_idx = np.argmax(x) # Return the index of the maximum value of y
print(v[highest_probability_idx])
Здесь np.argmax
возвращает индекс максимальное значение в возвращаемом массиве, которое затем можно использовать для доступа к соответствующему x в вашем v
векторе