issubdtype: هل النوع الأضيق فرع من الأوسع؟
اختبار int16 مع int32 أعطى False في الاتجاهين، بينما سمح can_cast بالاتجاه من int16 إلى int32 مع safe. سنفصل علاقة النوع عن سياسة السماح، دون تحويل مصفوفة أو فحص عدد موجود فيها.
أفكار وأدوات رقمية بلغة مفهومة.
2060 مقالًا
اختبار int16 مع int32 أعطى False في الاتجاهين، بينما سمح can_cast بالاتجاه من int16 إلى int32 مع safe. سنفصل علاقة النوع عن سياسة السماح، دون تحويل مصفوفة أو فحص عدد موجود فيها.
أعطى isdtype مع النوع np.bool_ والفئة "numeric" القيمة False، بينما أعطى مع "bool" القيمة True. سنراجع أسماء الفئات، ثم نضيف خيارًا يقبل العددية أو المنطقية دون أن ننفذ عملية حسابية على القيم.
من القائمة ["h","i"] أعادت mintypecode الرمز "h" عند typeset="h". لكن can_cast مع safe أعطى False من "i" إلى "h". سنفصل تصفية الرموز عن فحص السماح لكل نوع أصلي، ونراجع المسار الافتراضي دون تحويل بيانات.
الكتابة "u2" نجحت مع dtype وأعطت uint16، لكنها سببت KeyError عند تمريرها مباشرة إلى typename. سنقرأ رمز char الذي رجع، ثم نختبر float16 كحالة لا تنجح فيها خطوة الرمز أيضًا.
مع الأنواع i1 وu1 وf2، أعطى تجميع الأولين قبل الثالث float32، وأعطى تجميع الأخيرين قبل الأول float16. نكتب الخطوتين الوسيطتين كي نرى ما غيرته الأقواس، دون جمع قيم عددية.
مصفوفة int16 بالقيم [−41,0,41,43] أعطت الفئة numpy.float64 من common_type. سنقارنها بتمثيل float16 للقيم نفسها، ونفصل فئة الناتج من نوع المصفوفة التي بقيت كما هي.
مع متجه float32 بالقيم [−61,65]، أعطى result_type العدد الصحيح 61 وصف float32، لكنه أعطى الفئة int وصف float64. نضيف عددًا كبيرًا وتحكم NumPy int64، ونحفظ إصدار التشغيل دون تنفيذ حساب على العناصر.
أعطت isnat القناع [False,True] لتاريخ معلوم يليه NaT، وكذلك لمدة معلومة يليها NaT. لكن تمرير مصفوفة float64 بالقيم [101,NaN] رفع TypeError. سنحفظ نوع المدخل والخطأ مع القناع الناجح.
على مصفوفة float64 بالقيم [113,+Inf,0] رفعت asarray_chkfinite خطأ ValueError؛ بقيت اللانهاية في الأصل. أما asarray فأعادت المصفوفة الأصلية نفسها. سنفصل قبول المدخل عن استبدال قيمه وعن إنشاء نسخة.
أعادت array_equiv قيمة True لمصفوفة int64 فارغة بالشكل (0,3) أمام صف [131,132,133] بالشكل (1,3). لا توجد عناصر في المصفوفة الأولى. سنحفظ الشكلين ونتيجة المقارنة ونختبر عرضًا غير متوافق.
من مدخل int64 فارغ بالشكل (0,3)، أعادت diagflat مع k=2 مصفوفة (2,2) ذات أربعة أصفار. مع k=0 رجع الشكل (0,0) بلا عناصر. سنميز عدد العناصر من عدد القيم غير الصفرية.
على الشكل (4,5)، رفعت unravel_index خطأ ValueError عند الفهرس −1، بينما حولت19 إلى الإحداثيين (3,4). مصفوفة int64 مستقلة تحمل0 إلى19 أعادت19 عند a[-1]. سنحفظ الفرق بين تحويل موضع وقراءة قيمة.
بدأنا بالقيم0x2135 و0x4769 وصفر من <u2. بعد byteswap بقي النوع <u2، لكن القيم صارت0x3521 و0x6947 وصفر. قراءة البايتات المتبدلة بنوع >u2 أعادت القيم الأصلية. سنحفظ البايتات وتفسير النوع معًا.
أعادت isposinf في تجربتنا قناعًا منطقيًا، ثم أعادت أصفارًا وآحادًا عندما مررنا مصفوفة int8 للإخراج. سنفصل نوع الجواب عن قيم المصدر، ونراجع ما كتب في المصفوفة الممررة.
أعادت flatnonzero في عرضنا ذي الأعمدة المعكوسة الأرقام[0,2,5,7]. الرقم0 يحدد موضع قيمة−172، ولا يقول إنها صفر. سنربط الفهرس المسطح بإحداثيات المدخل الذي فحصناه.
نجحت place في تجربتنا مع قيم استبدال فارغة عندما كان القناع كله False، ورفعت ValueError عندما اختار القناع موضعين. بقيت الوجهة ثابتة في الحالتين؛ سنفصل حالة النداء عن الأعداد الباقية.
أعطى وصفا U31 وU81 الرمزU نفسه، لكن حجم العنصر كان124 و324 بايتًا في تشغيلنا. سنقرأ char إلى جانب الوصف والحجم، ونفصل عودة كائن النوع عن قيم خصائصه.
نجح مصدر من صف واحد مع ثلاث بطاقات فهارس، ورجع ثلاثة صفوف اختيارات. سنحدد من أين جاءت قيم كل صف، ثم نقارن مصدرًا صريحًا من ثلاثة صفوف ومصدرًا غير متوافق من صفين.