هل هناك طريقة أفضل لجعل numpy.argmin () تجاهل قيم النان
سؤال
أرغب في الحصول على فهرس قيمة 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
.
لمزيد من الطرق تتجاهل nan
S ، تحقق من صفائف ملثمة.
لا تنتمي إلى StackOverflow