كيفية الإصلاح: يمكن تحويل المصفوفات العددية الصحيحة فقط إلى فهرس عددي


الخطأ الذي قد تواجهه عند استخدام بايثون هو:

 TypeError : only integer scalar arrays can be converted to a scalar index

يحدث هذا الخطأ عادةً لأحد السببين:

1. لقد حاولت إجراء فهرسة الصفيف في القائمة.

2. لقد حاولت ربط مصفوفتين باستخدام بناء جملة غير صحيح.

توضح الأمثلة التالية كيفية تجنب هذه الأخطاء في كلا السيناريوهين.

مثال 1: لقد حاولت إجراء فهرسة مصفوفة في قائمة.

لنفترض أننا نحاول استخدام الكود التالي لإنشاء مخطط خطي في matplotlib مع وسيلة إيضاح وتسميات:

 import numpy as np

#create a list of values
data = [3, 5, 5, 7, 8, 10, 12, 14]

#choose 3 random values from list
random_values = np. random . choice (range(len(data)), size= 2 )

#attempt to use indexing to access elements in list
random_vals = data[random_values. astype (int)]

#view results
random_vals

TypeError : only integer scalar arrays can be converted to a scalar index

لقد تلقينا خطأً لأننا حاولنا استخدام فهرسة المصفوفة في القائمة.

لتجنب هذا الخطأ، يجب علينا أولاً تحويل القائمة إلى مصفوفة NumPy باستخدام np.array() كما يلي:

 import numpy as np

#create a list of values
data = [3, 5, 5, 7, 8, 10, 12, 14]

#choose 3 random values from list
random_values = np. random . choice (range(len(data)), size= 2 )

#attempt to use indexing to access elements in list
random_vals = np. array (data)[random_values. astype (int)]

#view results
random_vals

array([5, 7])

هذه المرة يمكننا اختيار قيمتين بشكل عشوائي من القائمة دون أي خطأ منذ أن قمنا بتحويل القائمة لأول مرة إلى مصفوفة NumPy.

مثال 2: لقد حاولت ربط مصفوفتين باستخدام بناء جملة غير صحيح.

لنفترض أننا نحاول استخدام الكود التالي لربط مصفوفتين NumPy:

 import numpy as np

#create twoNumPy matrices
mat1 = np. matrix ([[3, 5], [5, 7]])
mat2 = np. matrix ([[2, 4], [1, 8]])

#attempt to concatenate both matrices
n.p. concatenate (mat1, mat2)

TypeError : only integer scalar arrays can be converted to a scalar index

لقد تلقينا خطأً لأننا فشلنا في توفير المصفوفات كصف للدالة المتسلسلة () .

لتجنب هذا الخطأ، يجب عليك استخدام الأقواس المزدوجة لتوفير المصفوفات في شكل صف إلى الدالة concatenate() كما يلي:

 import numpy as np

#create twoNumPy matrices
mat1 = np. matrix ([[3, 5], [5, 7]])
mat2 = np. matrix ([[2, 4], [1, 8]])

#attempt to concatenate both matrices
n.p. concatenate ((mat1, mat2))

matrix([[3, 5],
        [5, 7],
        [2, 4],
        [1, 8]])

تمكنا هذه المرة من ربط المصفوفتين دون أي أخطاء.

مصادر إضافية

تشرح البرامج التعليمية التالية كيفية إصلاح الأخطاء الشائعة الأخرى في بايثون:

كيفية إصلاح KeyError في الباندا
كيفية الإصلاح: خطأ القيمة: غير قادر على تحويل float NaN إلى int
كيفية الإصلاح: خطأ في القيمة: لا يمكن بث المعاملات بالأشكال

Add a Comment

ایمئیل یایینلانمایاجاق ایسته‎نیله‎ن بوشلوقلار خاللانمیشدیر *