قد تحتفظ بالأعداد وترتيبها داخل صفوفها، ثم تبدل المصفوفة بصفوف موضوعة في tuple. نقارن الطلبين على جدول مؤلف غير مربع، ونكتب النقاط التي يفهمها كل طلب قبل قراءة شكل المدرج وعدد مشاهداته.
الحاوية جزء من القراءة
في histogramdd يمثل صف المصفوفة نقطة؛ وفي تسلسل قوائم الإحداثيات تمثل كل قائمة قيم إحداثي واحد. [1]
في التنفيذ المحدد تُقرأ shape أولًا؛ ومسار التسلسل يستخدم atleast_2d(sample).T. [2]
لا نحتاج إلى تغيير عدد مكتوب كي تختلف النقاط التي ندخلها. سنثبت جدولًا، ثم نميز بين تمرير الجدول كمصفوفة وتمرير صفوفه بوصفها قوائم إحداثيات.
نسمي عدد النقاط N وعدد إحداثيات كل نقطة D في بطاقاتنا. لا نستخدم كلمة البعد لكل رقم في شكل الحاوية دون بيان دوره؛ قد يكون الرقم عدد مشاهدات في طلب وعدد إحداثيات في الآخر.
صفان من ثلاث خانات
شغّلنا NumPy 2.3.5 على CPython 3.12.14. أنشأنا A=np.array([[1,3,1],[3,1,3]],dtype=np.float64). هذه قيم تعليمية بلا وحدات؛ لم نجمعها من قياسات أو أمثلة المصدر.
استدعينا np.histogramdd(A,bins=2,range=[(0,4)]*3,density=False). النقطتان في بطاقتنا هما (1,3,1) و(3,1,3)، لكل منهما ثلاثة إحداثيات.
عاد H بالشكل (2,2,2) ومن float64. حواف كل محور [0,2,4]؛ في التشغيل كان عدد مصفوفات الحواف ثلاثًا. جمع قيم H أعطى 2.
نكتب فهرس الفئة 0 للقيمة 1، والفهرس 1 للقيمة 3. تقع النقطة الأولى في الخلية (0,1,0)، والثانية في (1,0,1). عد كل خلية منهما 1، والخلايا الست الأخرى صفر.
إذن يحتوي الناتج ثماني خلايا لأن 2×2×2=8، لكنه احتسب نقطتين. لا نقرأ عدد الخلايا عددًا للمشاهدات؛ الفئات ليست نقاطًا إضافية في الجدول.
الصفوف تصبح قوائم إحداثيات
أنشأنا T=(np.array([1,3,1],dtype=np.float64),np.array([3,1,3],dtype=np.float64)). حافظنا على كل صف بأعداده، لكن T تسلسل من قائمتين، لا A ذات shape=(2,3).
استدعينا np.histogramdd(T,bins=2,range=[(0,4)]*2,density=False). قرأنا القائمة الأولى قيم الإحداثي الأول، والثانية قيم الإحداثي الثاني؛ فالنقاط الآن (1,3) و(3,1) و(1,3).
عاد المدرج [[0,2],[1,0]] بالشكل (2,2) ومن float64. حواف المحورين [0,2,4]، ومجموع العد 3. النقطة (1,3) ظهرت مرتين في البيانات المفسرة فدخلت خليتها مرتين.
اختيار مدى بطول اثنين في هذا الطلب كان صريحًا ليناسب النقاط ذات الإحداثيين. لم نختبر ما يحدث عند إبقاء مدى بطول ثلاثة مع T، فلا نعرض خطأ مفترضًا لذلك الطلب.
للتحكم الصحيح، أنشأنا C=(np.array([1,3],dtype=np.float64),np.array([3,1],dtype=np.float64),np.array([1,3],dtype=np.float64))؛ هذه قوائم أعمدة A. مررنا C مع bins=2 وrange=[(0,4)]*3 وdensity=False. عاد الشكل (2,2,2)، واتفقت جميع الخلايا والحواف مع طلب A.
لم يكن المطلوب جعل كل تسلسل يختلف عن كل مصفوفة. في تحكمنا عبرت القوائم عن الإحداثيات الصحيحة للنقطتين؛ تبديل نوع الحاوية يحتاج الحفاظ على معنى عناصرها، لا مجرد نقل الصفوف نفسها.

مرجع الخلايا وحدود الفحص
كوّن مرجع Python النقاط من صفوف القائمة الأصلية لمسار المصفوفة. ولمسار tuple الصفوف، كوّن نقطة من العناصر التي تحمل فهرس الموضع نفسه في القائمتين. المرجع يعلن المعنى المطلوب لكل طلب قبل تشغيله.
أنشأ المرجع قاموسًا لجميع الخلايا الثنائية في عدد الأبعاد المطلوب. لكل نقطة، اختار 0 للإحداثي الأقل من 2 و1 للأكبر منها، ثم زاد عد الخلية. لم يستدع histogramdd أو أي دالة فئات من NumPy لبناء المتوقع.
اخترنا أربعة أشكال للشبكة: (2,3) و(3,2) و(2,4) و(4,2). لكل شكل ولدنا جميع الجداول الممكنة من القيمتين 0.5 و2.5. جميع القيم داخل المدى وبعيدة عن أطراف الفئات.
للشكلين الأولين 2**6=64 جدولًا لكل منهما، وللشكلين الآخرين 2**8=256 لكل منهما. المجموع 64+64+256+256=640. أضفنا مثال 1 و3 خارج قيم الشبكة فصار العدد 641.
لكل حالة ثلاث مجموعات: مدرج المصفوفة أمام عد الصفوف المرجعي مع الشكل والحواف والنوع والمجموع؛ ومدرج tuple الصفوف أمام نقاطه المرجعية؛ وتحكم قوائم الإحداثيات أمام مدرج المصفوفة وخلاياه وحوافه.
مرت 641×3=1923 مجموعة، واستدعينا histogramdd ثلاث مرات لكل حالة، أي 1923 نداءً أيضًا. تساوي العددين في فحصنا لا يجعل مجموعة التحقق ونداء الدالة مفهومًا واحدًا.
النطاق جداول float64 مستطيلة غير مربعة بالأشكال المذكورة، وفئتان لكل بعد مع مدى صريح من 0 إلى 4 وdensity=False بلا أوزان. لم نفحص الأطراف أو القيم الخارجية أو NaN، أو جدولًا فارغًا أو غير منتظم أو مربعًا، أو كثافة أو أوزانًا أو اختيار فئات آليًا أو ملكية الذاكرة أو أداء. لم نشغّل إصدارًا أقدم.
عند مراجعة طلب مشابه، اكتب النقاط التي يقصدها تمثيلك ثم عدد إحداثياتها. حفظ الأعداد وحده لم يحفظ معنى العينات في طلبَي A وT؛ تحكم C بيّن كيف نحتفظ بالمعنى عند اختيار قوائم الإحداثيات.
| المدخل | العينات / الأبعاد | شكل المدرج / مجموع العد |
|---|---|---|
| A: ndarray | 2 / 3 | (2,2,2) / 2 |
| T: original rows tuple | 3 / 2 | (2,2) / 3 |
| C: coordinate lists tuple | 2 / 3 | (2,2,2) / 2 |
للتوسع: أبعاد المصفوفات والمنقول.
المراجع
أُعدّ هذا المقال بمساعدة الذكاء الاصطناعي، وخضع لمراجعة ذاتية بالأداة نفسها. لا يُنسب إلى مراجع بشري أو خبير مستقل. منهجية المحتوى.
