مع المدخلات المقنعة، concatenate تعيد MaskedArray دون حفظ أقنعة المدخلات. [1]
النوع والبيانات والقناع
مع المدخلات المقنعة، concatenate تعيد MaskedArray دون حفظ أقنعة المدخلات. [1]
ma.concatenate تحفظ مواضع القناع في الناتج. [2]
نفصل ثلاثة سجلات في المثال: البيانات المخزنة، والقناع، ونوع الكائن المعاد. نراجع كل سجل بنفسه، ولا نجعل بقاء اسم النوع دليلًا على أن بيانات القناع انتقلت.
نضع العدد 99 في موضع اخترنا تقنيعه. الرقم ليس رمز غياب عامًّا أو قيمة ملء استخرجناها من مصدر؛ لم نختبر قاعدة تقنع كل عدد يساويه، ولم نستخدم NaN.
ستظهر قيمة 99 في قراءة البيانات الخام للناتجين. السؤال هو هل يحتفظ الناتج بالقناع الذي وضعناه لهذا الموضع، وما الذي تعيده قراءة العناصر المضغوطة في التشغيل المسجل.
نفس البيانات وقناع مختلف
شغّلنا NumPy 2.3.5 على CPython 3.12.14. أنشأنا A=np.ma.array([4,99],mask=[False,True],dtype=np.int64) وB=np.ma.array([7],mask=[False],dtype=np.int64). شكلا المدخلين (2,) و(1,).
نفذنا ordinary=np.concatenate([A,B],axis=0) وpreserved=np.ma.concatenate([A,B],axis=0). في كليهما كان isinstance(result,np.ma.MaskedArray) هو True، والشكل (3,)، وdtype يساوي int64.
قراءة ordinary.data أعطت [4,99,7]، وpreserved.data أعطت [4,99,7] أيضًا. ترتيب ضم البيانات متفق؛ لا نحتاج افتراض أن العدد 99 حُذف من التخزين كي نفهم القناع.
قرأنا np.ma.getmaskarray على كل ناتج. أعطت ordinary القناع [False,False,False]، بينما أعطت preserved القناع [False,True,False]. بقي الموضع الأوسط مقنعًا في الثاني وحده.
أعادت ordinary.compressed() القائمة [4,99,7]، وأعادت preserved.compressed() القائمة [4,7]. هاتان نتيجتان فعليتان في مثالنا، وليستا حكمًا على صحة الأعداد أو جودة بيانات واقعية.
تحكم يبقي الأعداد
أنشأنا مدخلين جديدين بالبيانات [4,99] و[7] والنوع نفسه، لكن جعلنا كل مواضع القناع False. لم نغير قيمة 99 أو طول مدخل أو محور الضم.
في التحكم رجع الطلبان بنوع MaskedArray وشكل (3,) وبيانات [4,99,7]. أعطى فحص القناع [False,False,False] في الاثنين، وأعادت compressed القائمة الكاملة في الاثنين أيضًا.
إذن اختفاء 99 من قراءة compressed في الطلب المقنع الأول يتبع القناع الذي وضعناه، وليس مقدار العدد. اتفاق الطلبين عند غياب القناع لا يثبت انتقال قناع موجود في تجربة أخرى.
حفظنا بايتات بيانات A وB وقناعيهما قبل الاستدعاءات وبعدها؛ بقيت ثابتة. فحص مشاركة ذاكرة البيانات بين كل ناتج وكل مدخل أعطى False في نطاقنا. لم ننفذ كتابة إلى النتائج أو المدخلات.
نحفظ اسم الاستدعاء والبيانات والقناع مع النتيجة. لا نكتفي بفحص نوع الكائن أو طول الناتج ثم نكتب أن جميع معلومات المدخل بقيت؛ بطاقة القناع في المثالين تجيب عن ذلك بصورة مباشرة.

مرجع مستقل ونطاق محدود
مرجع Python يبدأ بالقوائم الأصلية للبيانات والأقنعة، ويضمها بترتيب المدخلين. يقارن الناتج العادي ببيانات كاملة وقناع من False، ويقارن الناتج المقنع ببيانات كاملة وقائمة القناع الأصلية المضمومة.
للقائمة المنتقاة، يقرأ المرجع كل زوج قيمة وقناع ويحتفظ بالقيمة عندما يكون قناعها False. لا يستخدم concatenate أو ma.concatenate أو getmaskarray أو compressed من NumPy لبناء التوقع.
اخترنا ثلاث خانات بيانات، لكل منها إحدى القيم {−1,0,2}: عدد بطاقات البيانات 3**3=27. ولكل خانة قناع False أو True، فتوجد 2**3=8 بطاقات قناع. إجمالي الشبكة 27×8=216 حالة.
أضفنا المثال والتحكم بالبيانات [4,99,7] خارج شبكة القيم، فصار العدد 218. لكل حالة سبعة فحوص: بيانات وشكل ونوع الناتج العادي؛ قناعه؛ بيانات وشكل ونوع الناتج المقنع؛ قناعه؛ قراءتا compressed مقابل المرجع؛ ثبات المدخلين؛ وغياب مشاركة ذاكرة البيانات.
مرت 218×7=1526 عملية فحص. اختلف قناعا الطلبين في 190 حالة: سبعة أنماط غير خالية من التقنيع لكل بطاقة بيانات شبكية، أي 27×7=189، ثم المثال المعلن؛ التحكم بلا قناع لم يضف اختلافًا.
اقتصرنا على مدخلين من MaskedArray الأساسية وint64، بطولين 2 و1 وبعد واحد وaxis=0. لم نفحص خلط ndarray عادية، أو أنواعًا وأشكالًا ومحاور أخرى، أو الفراغ، أو out والتحويل العددي، أو انتقال hardmask وقيمة الملء، أو فئات مشتقة، أو الأداء.
إزالة القناع في نتيجة معينة لا تجعل البيانات المخزنة صحيحة علميًا. غرض الفحص هو حفظ الفرق المسجل بين نوع الكائن ومعلومات القناع، دون استنتاج سياسة تعويض أو قبول لبيانات حقيقية.
| الطلب | القناع | compressed |
|---|---|---|
| concatenate | False، False، False | 4، 99، 7 |
| ma.concatenate | False، True، False | 4، 7 |
| التحكم في الطلبين | False، False، False | 4، 99، 7 |
للتوسع: فحص القيم المحدودة.
المراجع
أُعدّ هذا المقال بمساعدة الذكاء الاصطناعي، وخضع لمراجعة ذاتية بالأداة نفسها. لا يُنسب إلى مراجع بشري أو خبير مستقل. منهجية المحتوى.
