У меня есть числовой массив, в котором я буду вычислять разницу LN между некоторыми числами, а затем я хочу получить ее среднее значение. Проблема в том, что функция LN будет неопределимой с отрицательными входами, и также может произойти деление на ноль. Я хотел бы пропустить эти ненужные элементы, и я даже не хочу включать их в массив. Что я хочу, так это пройти только те уравнения, которые можно вычислить, и взять их среднее значение.
Я пытался сделать это с помощью numpy.nan, который, кажется, является наиболее эффективным способом справиться с этим, просто поместите numpy.nan для каждого значения индекса, которое не может быть вычислено. Проще говоря, я просто инициализирую массив как nan с самого начала, а затем просто заполняю вычисляемые элементы и по умолчанию оставляю все остальное nan.
Как это:
LN_ARRAY = numpy.full(array_size, numpy.nan, dtype=float, order='C')
...
for i in range(7,array_size):
if(F>0.0): LN_ARRAY[i]=abs( math.log( A / F ) )
# make sure F can't be zero or negative, A is by default always non zero positive
Теперь проблема в том, что, если я просто возьму среднее значение с numpy.average(LN_ARRAY)
, оно просто выдаст nan
, потому что у меня всегда будут значения nan
, так как я иду из 8-го элемента, чтобы заполнить массив, плюс дополнительный nan
из-за теста if.
Есть ли способ вычислить среднее значение этого массива, исключив nan
или сделать его более эффективным способом?