علوم وفضاء

quantile: هل يحفظ overwrite_input=True ترتيب المدخل؟

قيمة إحصائية ومدخل تغير.
المثال تغير عند السماح بالكتابة.

رجع الإحصاء نفسه في الضبطين، لكن ترتيب مصفوفة المثال تغير عندما سمحنا بالكتابة عليها أثناء الحساب.

السماح بالتعديل

overwrite_input=True يسمح بتعديل المدخل أثناء الحساب؛ لا تحدد الوثائق محتواه بعد ذلك. [1]

المدخل والإعدادات

شغلنا NumPy 2.3.5 على CPython 3.12.14؛ المدخل int64 هو [10,-5,4,7]، وq=0.5 وmethod="linear"، مع axis=None.

الأعداد مؤلفة. نبدأ بمصفوفتين جديدتين من القيم نفسها، ونقارن الإحصاء وحالة المدخل بعد كل استدعاء. لا نحول نتيجة واحدة إلى تحكم للنتيجة الأخرى.

إحصاء ثابت ومدخل مختلف

مع True رجعت 5.5 من float64؛ بقي شكل المدخل (4,) ونوعه int64، وصار [-5,4,7,10] وتغيرت بايتاته.

a=np.array([10,-5,4,7],dtype=np.int64) value=np.quantile(a,0.5,method="linear",overwrite_input=True) print(value,a.tolist())

هذا ترتيب رُصد في المثال، وليس وعدًا بفرز كامل أو محتوى صالح للاعتماد عليه بعد الاستدعاء؛ الوثائق تترك المحتوى غير محدد عند السماح بالتعديل. [1]

تحكم جديد دون السماح بالكتابة.
بقيت القيمة وبايتات المدخل في التحكم.

تحكم يحفظ المدخل وحدود الفحص

مع False صريح ومصفوفة جديدة رجعت 5.5 أيضًا؛ بقي المدخل [10,-5,4,7] وبايتاته دون تغيير.

مرت 121 حالة و242 نداءً؛ بقيت المدخلات الـ121 مع False، وتغيرت 87 مع True ولم تتغير 34. السماح بالتعديل لا يعني وقوع تغيير في كل حالة.

control=np.array([10,-5,4,7],dtype=np.int64) value=np.quantile(control,0.5,method="linear",overwrite_input=False) print(value,control.tolist())

عند axis=None، يختار التنفيذ المقروء ravel مع السماح بالكتابة، وflatten دونها؛ ثم يستعمل partition في الحساب. [2]

المرجع الكسري المستقل يرتب قائمة Python ويأخذ الوسط أو متوسط الوسطيتين عند q=0.5. في المثال تصبح القيم الوسطى 4 و7، ومتوسطهما 11/2=5.5. لا يستخدم المرجع quantile لبناء التوقع.

الشبكة تضم 120 متجهًا بأطوال 1 إلى 4، وقيم −2 أو صفر أو 3؛ أضفنا المثال فصارت 121 حالة. لكل حالة مدخلان جديدان وضبطان: 242 نداءً. قارنّا النتائج بالمرجع، وبايتات المدخل قبل الحساب وبعده ونوعه وشكله.

اقتصر التنفيذ على int64 متجاور أحادي غير فارغ وq=0.5 والطريقة linear. لم نفحص قيمًا كبيرة أو NaN أو اللانهاية أو طرقًا وكميات ومحاور وأنواعًا أخرى أو مدخلًا للقراءة فقط أو views أو out أو weights أو أداءً أو ذاكرة أو إصدارات أخرى. بقاء مجموعة القيم في تجاربنا ليس ضمانًا عامًا لمحتوى المدخل بعد True.

overwrite_inputالإحصاءالمدخل بعد الاستدعاء
True5.5 / float64[-5,4,7,10] / تغيرت البايتات
False5.5 / float64[10,-5,4,7] / بقيت البايتات

للتوسع: التجاهل والتعويض.

المراجع

  1. NumPy quantile
  2. NumPy 2.3.5 quantile implementation

أُعدّ هذا المقال بمساعدة الذكاء الاصطناعي، وخضع لمراجعة ذاتية بالأداة نفسها. لا يُنسب إلى مراجع بشري أو خبير مستقل. منهجية المحتوى.