سؤال
وكقيمة بديل للآخر في عملية مع المصفوفات، أو كيفية البحث ضمن مجموعة واستبدال قيمة من جانب آخر
وعلى سبيل المثال:
array ([[NaN, 1., 1., 1., 1., 1., 1.]
[1., NaN, 1., 1., 1., 1., 1.]
[1., 1., NaN, 1., 1., 1., 1.]
[1., 1., 1., NaN, 1., 1., 1.]
[1., 1., 1., 1., NaN, 1., 1.]
[1., 1., 1., 1., 1., NaN, 1.]
[1., 1., 1., 1., 1., 1., NaN]])
وحيث يمكن أن يحل محل نان من 0. شكرا لأي رد
المحلول
هل يمكن أن تفعل هذا:
import numpy as np
x=np.array([[np.NaN, 1., 1., 1., 1., 1., 1.],[1., np.NaN, 1., 1., 1., 1., 1.],[1., 1., np.NaN, 1., 1., 1., 1.], [1., 1., 1., np.NaN, 1., 1., 1.], [1., 1., 1., 1., np.NaN, 1., 1.],[1., 1., 1., 1., 1., np.NaN, 1.], [1., 1., 1., 1., 1., 1., np.NaN]])
x[np.isnan(x)]=0
وnp.isnan(x)
إرجاع مجموعة المنطقية التي True
أينما x
هو NaN
.
x[ boolean_array ] = 0
توظف الفهرسة يتوهم لتعيين قيمة 0 أينما مجموعة المنطقية هي True
.
لمقدمة كبيرة لفهرسة الهوى وأكثر من ذلك بكثير، انظر href="http://www.tramy.us/" أيضا numpybook و.
نصائح أخرى
وهذه الأيام هناك وظيفة خاصة:
a = numpy.nan_to_num(a)
وهنا هو المثال مجموعة في السؤال:
import numpy as np
a = np.where(np.eye(7), np.nan, 1)
ويمكنك إما استخدام numpy.where و numpy.isnan وظائف لإنشاء مجموعة جديدة b
:
b = np.where(np.isnan(a), 0, a)
وأو استخدام وظيفة في نفس المكان لمباشرة تعديل مجموعة a
:
np.place(a, np.isnan(a), 0) # returns None
لا تنتمي إلى StackOverflow