كيفية الإصلاح: الكائن "numpy.float64" لا يدعم تعيين العنصر
الخطأ الشائع الذي قد تواجهه عند استخدام بايثون هو:
TypeError: 'numpy.float64' object does not support item assignment
يحدث هذا الخطأ عادةً عند محاولة استخدام الأقواس المربعة لتعيين قيمة جديدة لمتغير NumPy من النوع float64 .
يوضح المثال التالي كيفية حل هذا الخطأ عمليًا.
كيفية إعادة إنتاج الخطأ
لنفترض أننا أنشأنا متغير NumPy بقيمة 15.22 وحاولنا استخدام الأقواس لمنحه قيمة جديدة قدرها 13.7 :
import numpy as np #define some float value one_float = np. float64 (15.22) #attempt to modify float value to be 13.7 one_float[0] = 13.7 TypeError: 'numpy.float64' object does not support item assignment
لقد تلقينا خطأ مفاده أن الكائن ‘numpy.float64’ لا يدعم تعيين العنصر .
لقد تلقينا هذا الخطأ لأن one_float عددي ولكننا حاولنا معاملته كمصفوفة حيث يمكننا استخدام الأقواس المربعة لتعديل القيمة عند موضع الفهرس 0.
نظرًا لأن one_float ليس مصفوفة، فلا يمكننا استخدام الأقواس المربعة عند محاولة تعديل قيمتها.
كيفية اصلاح الخطأ
طريقة حل هذا الخطأ هي ببساطة عدم استخدام الأقواس المربعة عند تعيين قيمة جديدة للعدد العائم:
#modify float value to be 13.7
one_float = 13.7
#view float
print (one_float)
13.7
لقد تمكنا من تغيير القيمة من 15.22 إلى 13.7 لأننا لم نستخدم الأقواس.
لاحظ أنه من الممكن استخدام الأقواس المربعة لتعديل القيم في مواضع فهرس محددة طالما أنك تعمل مع مصفوفة.
على سبيل المثال، يوضح التعليمة البرمجية التالية كيفية تغيير العنصر الأول في مصفوفة NumPy من 15.22 إلى 13.7 باستخدام تدوين القوس:
import numpy as np
#define a NumPy array of floats
many_floats = np. float64 ([15.22, 34.2, 15.4, 13.2, 33.4])
#modify float value in first index position of array to be 13.7
many_floats[0] = 13.7
#view updated array
print (many_floats)
[13.7 34.2 15.4 13.2 33.4]
هذه المرة أيضًا لم نتلقى خطأً لأننا نعمل مع مصفوفة NumPy، لذا فمن المنطقي استخدام الأقواس.
مصادر إضافية
تشرح البرامج التعليمية التالية كيفية إصلاح الأخطاء الشائعة الأخرى في بايثون:
كيفية الإصلاح في Python: الكائن “numpy.ndarray” غير قابل للاستدعاء
كيفية الإصلاح: خطأ في الكتابة: الكائن “numpy.float64” غير قابل للاستدعاء
كيفية الإصلاح: خطأ في الكتابة: كائن السلسلة أو البايتات المتوقعة