في تجربتنا، الأصل قابل للكتابة؛ لكن عناصر المرور الافتراضي رفضت الإسناد، ونجح ضبط readwrite.
وضع الوصول
افتراضيًا يعامل nditer المدخل للقراءة؛ يسمح readwrite بالقراءة والكتابة. [1] [2]
مدخل التجربة
شغلنا NumPy 2.3.5 على CPython 3.12.14؛ الأصل int64 بالشكل (2,2) وقيمه [[8,-3],[2,5]]، وقابل للكتابة.
الأعداد مؤلفة للتعليم، وليست قياسات. نحفظ النوع والشكل، ونقارن الإسناد العددي نفسه في الحالين.
الرفض الافتراضي
مع order="C"، رفضت العناصر الأربعة إسناد قيمتها زائد 7 عبر x[...]، وكل رفض كان ValueError؛ بقيت بايتات الأصل.
الأصل يحمل writeable=True؛ أما كل عنصر خرج من المكرر فحمل writeable=False وشكلًا بلا محاور (). لا نعيد إسناد اسم x؛ المحاولة مفهرسة إلى العنصر.
with np.nditer(a,order="C") as it: for x in it: try:x[...]=int(x)+7 except ValueError:pass

تحكم صريح وحدود
نستعمل المكرر داخل with، ونضبط op_flags=["readwrite"] للتحكم المستقل. [1] [2]
التحكم بأصل جديد أعطى [[15,4],[9,12]]؛ مرت 202 حالة بفحصين لكل حالة، أي 404 نداءات و1508 محاولات إسناد.
with np.nditer(control,order="C",op_flags=["readwrite"]) as it: for x in it:x[...]=int(x)+7
حسب مرجع Python النتيجة بإضافة 7 إلى كل قيمة أصلية. الشبكة: 120 متجهًا بأطوال 1 إلى 4، و81 جدولًا (2,2)، وقيم الخانات −2 أو صفر أو 3؛ أضفنا المثال فبلغت الحالات 202. لكل حالة أصلان جديدان ووضعا مرور؛ 754 عنصرًا لكل وضع، أي 1508 محاولات.
اقتصر التنفيذ على int64 ومدخلات غير فارغة وترتيب C؛ لم نفحص التخزين المؤقت أو التحويل أو المدخلات الممنوعة للكتابة أو البث أو الشرائح أو توقيت إعادة الكتابة أو الأداء أو إصدارات أخرى.
| الوضع | عنصر المرور | نتيجة الأصل |
|---|---|---|
| default | writeable=False | [[8,-3],[2,5]] |
| readwrite | writeable=True | [[15,4],[9,12]] |
للتوسع: القيمة والمحاور.
المراجع
أُعدّ هذا المقال بمساعدة الذكاء الاصطناعي، وخضع لمراجعة ذاتية بالأداة نفسها. لا يُنسب إلى مراجع بشري أو خبير مستقل. منهجية المحتوى.
