البرمجة

فهم استخدام [:, None] في NumPy

في نومباي، عندما يتم استخدام تعبير الانتقاء [:, None] مع مصفوفة، يتم تغيير شكل المصفوفة.

لنفترض أن لدينا مصفوفة labels بشكل (n,)، حيث تمثل n عدد العناصر في المصفوفة. عند استخدام labels[:, None]، يتم تحويل هذه المصفوفة إلى شكل (n, 1)، حيث يتم إضافة بُعد جديد إلى المصفوفة. البُعد الجديد هو بُعد فردي يحتوي على العناصر السابقة. بمعنى آخر، يتم تحويل كل عنصر في المصفوفة الأصلية إلى مصفوفة فرعية داخل مصفوفة أكبر ببُعد واحد.

في السياق الذي تم ذكره في الشيفرة الخاصة بك، يُستخدم labels[:, None] لتحويل مصفوفة labels إلى شكل يمكن مقارنته بمصفوفة الفهرس المتعدد الأبعاد التي تُنشأ باستخدام np.arange(num_labels)، مما يُمكن من إجراء مقارنة مع جميع القيم المحتملة للعلامات وإنشاء مصفوفة جديدة من القيم المناسبة لكل علامة.

المزيد من المعلومات

تعتمد فكرة الاستخدام الشائع لـ [:, None] في NumPy على فهم الأبعاد والبُعد (dimensions) في المصفوفات. في NumPy، يُمكن للمصفوفات أن تكون متعددة الأبعاد، حيث يمكن للمصفوفة أن تحتوي على بُعد واحد (على سبيل المثال، مصفوفة (n,)) أو أكثر من بُعد (على سبيل المثال، مصفوفة (n, m)).

عند استخدام [:, None] مع مصفوفة في NumPy، يُضاف بُعد إضافي إلى المصفوفة. بمعنى آخر، يتم تحويل المصفوفة من أن تكون بشكل (n,) إلى أن تكون بشكل (n, 1)، حيث يُصبح لدينا بُعد جديد بطول 1.

في سياق الشيفرة التي قدمتها، labels[:, None] يُستخدم لتغيير شكل مصفوفة labels من (n,) إلى (n, 1)، وهذا يعني أن كل عنصر في المصفوفة labels الأصلية يتم تحويله إلى مصفوفة فرعية تحتوي على هذا العنصر فقط.

زر الذهاب إلى الأعلى