قد تعيد iscomplexobj القيمة True لمصفوفة، ثم تعطي iscomplex القناع [False,False] للمصفوفة نفسها. في مثالنا النوع complex128 والتخيلي صفر في العنصرين. سنقارن فحص النوع بفحص القيم، ونستعمل تحكمًا حقيقيًا وآخر مختلطًا.
سؤال عن النوع وسؤال عن العناصر
تفحص iscomplexobj النوع، وقد تعيد True مع جزء تخيلي صفري؛ ناتجها bool. [1] احتفظ باسم الفحص مع النتيجة.
تختبر iscomplex الجزء التخيلي غير الصفري، وتعطي مصفوفة منطقية. [2] هذا سؤال عنصر بعنصر، يختلف عن تصنيف نوع المدخل كله.
وتفحص isrealobj النوع أيضًا؛ للنوع المركب تعيد False حتى مع جزء تخيلي صفري. وهي موجهة للقيم العددية، لكن قبولها كائنات أخرى لا يجعل True برهانًا عامًا على طبيعة عددية حقيقية. [3] نجرب هنا مصفوفات عددية فقط.
ثبتنا NumPy 2.3.5 على CPython 3.12.14، والشكل (2,) لجميع المدخلات. أمثلتنا مؤلفة بلا وحدات، ولا نغير فئات Python المسجلة أو نطلب حذف أجزاء من القيم.
نوع مركب وقناع كله False
أنشأنا z=np.array([complex(21,0),complex(-26,0)],dtype=np.complex128). الجزآن الحقيقيان 21 و −26، والتخيليان صفر وصفر. العددان غير صفريين، لكن جزأيهما التخيليين صفريان في المدخل المعلن.
أعادت np.iscomplexobj(z) القيمة True من نوع builtins.bool. وفي نداء آخر أعادت np.isrealobj(z) القيمة False من النوع نفسه. هاتان إجابتان مفردتان على فحصي النوع، لا قائمتا نتائج لكل موضع.
أما np.iscomplex(z) فأعادت [False,False]، بمصفوفة bool ذات الشكل (2,). يشير الموضع الأول إلى العنصر الأول، والثاني إلى الثاني؛ كلا جزأيهما التخيليين يساوي صفرًا.
لا توجد مفارقة بين True المفردة وFalse في موضعي القناع. الأول فحص للنوع المركب المعلن، والآخر فحص لخاصية القيم. تسمية الدالتين متقاربة، لكن حذف obj من الاسم لا يترك السؤال نفسه.
حفظنا بايتات z قبل النداءات وبعدها، وبقيت ثابتة مع النوع والشكل. لم يتحول الأصل إلى float64 لأن القناع أعطى False، ولم ننشئ في هذه الخطوة بديلًا حقيقيًا منه.
تحكم حقيقي وآخر مختلط
أنشأنا f=np.array([21,-26],dtype=np.float64) مستقلًا. أعادت iscomplexobj القيمة False وisrealobj القيمة True؛ وأعاد فحص العناصر iscomplex القناع [False,False]. بقي float64 هو نوع المدخل.
إذن اتفق قناع العناصر بين z وf، بينما اختلفت نتيجتا النوع. لا نستنتج نوع التخزين من القناع وحده في هاتين الحالتين. ولم ننفذ مقارنة مساواة بين المصفوفتين أو تحويلًا كي نولد التحكم.
ثم أنشأنا w من complex128 بعنصري 21+3j و −26+0j. أعادت iscomplexobj True وisrealobj False، كما في z، لكن قناع iscomplex أصبح [True,False].
القيمة 3 في الجزء التخيلي الأول غير صفرية، والثاني بقي صفرًا. فحص النوع المفرد لم يخبرنا أي موضع تغير؛ القناع هو الذي حفظ هذا الفرق في التشغيل. نقرأ المدخل والإجابة عند الفهرس نفسه.
ومن تحكم int64 مستقل بعنصري [21,-26] حصلنا على False وTrue والقناع [False,False] على الترتيب. لا نحول هذا الاتفاق مع float64 إلى ادعاء بأن النوعين متطابقان أو أن كل مدخل غير مركب له الفئة العددية نفسها.

العد والمرجع وحدود التجربة
اخترنا 17 عددًا صحيحًا n من 21 إلى 37. لكل عدد أنشأنا ثلاث مصفوفات جديدة: complex128 بالجزأين التخيليين الصفريين، وfloat64 بالقيم الحقيقية، وcomplex128 المختلط بجزء تخيلي أول قيمته 3. الحقيقيان دائمًا n و −n−5.
هذه 17×3=51 مصفوفة، ومع تحكم int64 صارت 52. اختلفت بايتات المدخلات كلها، لكن لا نسميها 52 متجهًا مختلفًا عدديًا؛ تمثيل الجزء التخيلي الصفري والتحكم الحقيقي يشتركان في القيم المعلنة مع اختلاف النوع.
لكل مصفوفة ثلاثة نداءات مسماة، فكان 52×3=156. عادت 104 قيم bool مفردة من فحصي النوع، و 52 مصفوفة bool من iscomplex، تحمل 104 عناصر. إجمالي القيم المنطقية المحفوظة 208، لا 156.
نميز عدد النداءات وسجلات العودة من عدد العناصر: القناع ذو العنصرين ناتج نداء واحد. وصف نوعه وشكله وحصر بايتات المدخل بيانات مراجعة، ولا نعدها مخارج منطقية أصلية إضافية.
قبل الاستدعاءات أعلن المرجع أسماء الأنواع وأزواج الأجزاء الصحيحة. توقع فحصي النوع من النوع الذي اخترناه، وتوقع القناع بمقارنة كل جزء تخيلي مؤلف بالصفر. لم يستعمل أي دالة من الثلاث لبناء التوقع.
بنى مرجع struct بايتات أزواج المكونات العائمة أو الأعداد الصحيحة، ثم قارناها ببايتات المدخل قبل التشغيل وبعده. وافقت النتائج كلها التوقع، وبقيت المدخلات ثابتة في الفحوص المسجلة.
النطاق متجهات عددية منتهية بطول اثنين، من complex128 وfloat64 مع تحكم int64. لم نفحص مدخلًا مفردًا أو بلا محاور أو فارغًا أو أبعادًا أخرى أو object أو نصوصًا أو NaN واللانهاية أو أنواعًا أخرى أو أثر إشارة الصفر أو أداءً. ولم ننفذ all أوany أو تحويلًا أو حذفًا للتخيلي. احفظ سؤال النوع وسؤال القيمة منفصلين.
| Case | iscomplexobj | isrealobj | iscomplex |
|---|---|---|---|
| complex128 zero imag | True | False | [False,False] |
| float64 control | False | True | [False,False] |
| complex128 mixed | True | False | [True,False] |
| int64 control | False | True | [False,False] |
للتوسع: معنى الأعداد المركبة.
المراجع
أُعدّ هذا المقال بمساعدة الذكاء الاصطناعي، وخضع لمراجعة ذاتية بالأداة نفسها. لا يُنسب إلى مراجع بشري أو خبير مستقل. منهجية المحتوى.
