أعطى isdtype مع النوع np.bool_ والفئة "numeric" القيمة False، بينما أعطى مع "bool" القيمة True. سنراجع أسماء الفئات، ثم نضيف خيارًا يقبل العددية أو المنطقية دون أن ننفذ عملية حسابية على القيم.
الفئة المسماة وحدودها
isdtype تصنف أنواع NumPy المدمجة؛ وتقبل tuple للفئات. [1]
في المصدر المقروء، تضم numeric الأنواع الصحيحة والعائمة والمركبة دون bool؛ وتجمع tuple الفئات المقبولة. [2]
وتصف وثائق NumPy نوع bool بأنه ليس نوعًا عدديًا. [3] نستخدم وصف المكتبة ضمن سياقه، لا حكمًا على كل معنى لكلمة عدد.
السؤال هنا محدد: ما الجواب الذي تعيده isdtype لفئة نوع مدمجة واسم kind؟ نمرر np.bool_ بوصفه النوع، ولا نمرر np.bool_(True) أومصفوفة بقيم منطقية أوالنوع bool المدمج في Python.
اخترنا أنواعًا صريحة وأسئلة معلنة. لا نجعل الاسم "numeric" وعدًا بأن كل استعمال للقيم في الحساب جائز، ولا نجعل False دليلًا على أن عملية حسابية بعينها فشلت؛ لم نشغلها.
ثلاثة أسئلة للنوع المنطقي
شغّلنا np.isdtype(np.bool_,"numeric") فظهر False. وأعطى np.isdtype(np.bool_,"bool") القيمة True، ثم أعطى np.isdtype(np.bool_,"integral") القيمة False. جميع النتائج من builtins.bool.
بقي الوسيط الأول np.bool_ في النداءات الثلاثة. تغير اسم الفئة المطلوبة في الوسيط الثاني، فتغير جواب العضوية. لذلك نسجل اسم kind مع النتيجة؛ كتابة True وحدها لا توضح السؤال الذي اجتازه النوع.
لم ننشئ القيمتين True وFalse داخل مدخلات التجربة. حتى إن كانت إجابة التصنيف نفسها منطقية، فهي خرج الاختبار وليست قيمة أخضعناها للاختبار كي نعرف حقيقتها أو مقدارها.
إذا كان شرطنا المؤلف يسمح بالفئة numeric فقط، فنتيجة bool_ في هذا الاختبار لا تحقق ذلك الشرط. هذا وصف للشرط المعطى؛ لا يثبت أن النوع سيمنع كل حساب أوأنه يحتاج إلى تحويل.
ولم نفحص هنا العلاقات مع numbers.Number أوint في Python، أوطريقة __bool__ لكائن مخصص. تلك أسئلة مختلفة تحتاج مدخلاتها ومرجعها الخاصين.
خيار مركب وتحكمان
مررنا tuple من الاسمين: np.isdtype(np.bool_,("numeric","bool")). رجعت True، مع أن السؤال المفرد عن numeric رجع False. الخيار الجديد يقبل الفئة العددية أوالمنطقية في تجربتنا.
النتيجة لا تجعل bool_ عضوًا في numeric وحدها. لقد غيرنا الوسيط الثاني ليحتوي خيارين؛ حذف "bool" من وصف النداء يغير معنى ما سجلناه.
كذلك أعطى np.isdtype(np.bool_,("integral","bool")) القيمة True. لم نفهم tuple على أنها تشترط اجتياز الفئتين معًا، وإلا ناقض ذلك False التي سجلناها مع integral منفردة.
من تحكم uint64 سجلنا True مع numeric وintegral، وFalse مع bool. ومع tuple الأولى والثانية سجلنا True أيضًا. إذن True للخيار المركب لا يخبرنا وحده أي فئة مفردة حققها المدخل.
ومن تحكم datetime64 سجلنا False مع numeric وbool وintegral، وFalse مع الخيارين المركبين. لم ننشئ تاريخًا أوفرقًا زمنيًا ولم نستنتج ما تسمح به العمليات الزمنية من هذه الإجابات.
وأعطى الخيار الفارغ () القيمة False لكل نوع في شبكتنا، بما فيها bool_ وuint64. حفظناه كتحكم منفصل في السؤال المركب؛ لم ندع أنه نوع بيانات فارغ أومصفوفة بلا عناصر.

عشرون نوعًا ومئتا نداء
ضم سجلنا bool_؛ والأنواع الصحيحة int8 وint16 وint32 وint64، وuint8 وuint16 وuint32 وuint64؛ والعائمة float16 وfloat32 وfloat64؛ والمركبة complex64 وcomplex128. هذه 14 فئة نوعية مدمجة.
أضفنا datetime64 وtimedelta64 وstr_ وbytes_ وvoid وobject_، فصار العدد 20. الأسماء مدخلات نوعية؛ لم نختبر 20 قيمة عددية أو20 متجهًا.
سألنا كل نوع عن سبعة أسماء kind الموثقة: bool وsigned integer وunsigned integer وintegral وreal floating وcomplex floating وnumeric. هذه 20×7=140 نداءً.
ثم سألناه عن ("numeric","bool") و("integral","bool") و()، فأضفنا 20×3=60 نداءً. الإجمالي 200 نداء و200 نتيجة bool مفردة، دون مخارج مصفوفية أوعناصر إضافية داخل قناع.
أعلن المرجع أسماء الأنواع وفئاتها قبل التشغيل. بنى توقع الفئة المركبة من تحقق واحد من الخيارات المعلنة باستخدام Python any، وبنى توقع الخيار الفارغ من عدم وجود خيار. لم يستعمل isdtype أواختبار NumPy آخر لصنع التوقع.
وافقت النتائج المرجع في النطاق المحدد. قراءة المصدر البعيد تدعم فهم الفئات والخيار المركب، لكنها لا تثبت تطابق الملف مع ثنائية المكتبة المثبتة؛ التشغيل محفوظ بإصداره ومدخلاته ومخارجه.
لم نفحص أنواع جهات أخرى أوفئات مخصصة أوأسماء kind خاطئة أوأخطاء أوlongdouble أوأسماء المنصة أومثيلات dtype أوحقيقة قيم أومصفوفات أوحسابات أوتحويلات أوالسماح بالتحويل أوالأداء أوإصدارات أخرى. احفظ اسم الفئة المطلوبة مع كل إجابة.
| Input type | numeric | bool | integral |
|---|---|---|---|
| bool_ | False | True | False |
| uint64 | True | False | True |
| datetime64 | False | False | False |
للتوسع: معنى الفئة والقيمة.
المراجع
أُعدّ هذا المقال بمساعدة الذكاء الاصطناعي، وخضع لمراجعة ذاتية بالأداة نفسها. لا يُنسب إلى مراجع بشري أو خبير مستقل. منهجية المحتوى.
