هل هناك طريقة أفضل لجعل numpy.argmin () تجاهل قيم النان

StackOverflow https://stackoverflow.com/questions/2821072

  •  26-09-2019
  •  | 
  •  

سؤال

أرغب في الحصول على فهرس قيمة min لمجموعة numpy التي تحتوي على nans وأريد تجاهلها

>>> a = array([ nan,   2.5,   3.,  nan,   4.,   5.])  
>>> a  
array([ NaN,  2.5,  3. ,  NaN,  4. ,  5. ])  

إذا قمت بتشغيل Argmin ، فإنه يعيد فهرس النان الأول

>>> a.argmin()  
0  

استبدل nans مع infs ثم أركض argmin

>>> a[isnan(a)] = Inf  
>>> a  
array([ Inf,  2.5,  3. ,  Inf,  4. ,  5. ])  
>>> a.argmin()  
1  

معضلي هي ما يلي: أفضل عدم تغيير nans إلى infs ثم العودة بعد انتهائي من Argmin (لأن nans لها معنى لاحقًا في الكود). هل هناك طريقة أفضل للقيام بذلك؟

هناك أيضًا سؤال حول ما ينبغي أن تكون النتيجة إذا كانت جميع القيم الأصلية لـ أ هل نان؟ في تنفيذي ، الجواب هو 0

هل كانت مفيدة؟

المحلول

بالتأكيد! يستخدم nanargmin:

import numpy as np
a = np.array([ np.nan,   2.5,   3.,  np.nan,   4.,   5.])
print(np.nanargmin(a))
# 1

يوجد ايضا nansum, nanmax, nanargmax, ، و nanmin,

في scipy.stats, ، هناك nanmean و nanmedian.

لمزيد من الطرق تتجاهل nanS ، تحقق من صفائف ملثمة.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top