تقنية

متجه أحادي البعد: هل يحوله النقل إلى عمود؟

نقل متجه ثلاثة أعداد يحفظ بعده الواحد بينما نقل صف ثنائي الأبعاد يصنع عمودا بثلاثة صفوف
رسم مؤلف لتنظيم الأعداد؛ لا تجربة تشغيل NumPy.

نقل متجه أحادي البعد في NumPy لا يحوله وحده إلى مصفوفة عمود. توثق transpose أن البعد الواحد لا يتغير بالنقل، وأن إنشاء عمود يحتاج إلى بعد إضافي. [1] نرسم الأعداد 5 و 9 و 13 في ثلاثة تنظيمات لتمييز إضافة محور من تبديل محورين موجودين.

الخلاصة السريعة

لا؛ نقل البعد الواحد يبقيه بعدا واحدا. العمود ذو بعدين يحتاج إلى إضافة محور، أو إلى نقل صف ذي بعدين فعلا.

  • توضح NumPy أن transpose لا يغير المتجه أحادي البعد، بينما نقل مصفوفة ذات بعدين يبدل محورَيها. [1] لا يولد النقل محورا مفقودا.
  • متجهنا يحوي 5 و 9 و 13 في بعد واحد بطول 3. نقله تحت العقد الموثق لا يصنع ثلاثة صفوف في عمود؛ يبقى التنظيم أحادي البعد.
  • عند تنظيم الأعداد نفسها في صف ذي بعدين، صف واحد وثلاثة أعمدة، ينتج من نقله ثلاثة صفوف وعمود واحد. القيم ثابتة، والمحوران موجودان قبل النقل.
  • إضافة محور طريقة أخرى لصنع العمود، كما يبين التوثيق. [1] حدد الشكل الذي يحتاجه المستهلك ومعنى محاوره؛ لا تجعل الشكل المتوافق إثباتا لصحة الأرقام أو أداء نموذج.

كم محورا لدينا قبل النقل؟

يفصل توثيق transpose حالة المتجه أحادي البعد عن النقل المعتاد لمصفوفة ذات بعدين. في الحالة الأولى يبقى التنظيم كما هو؛ وفي الثانية تتبادل المحاور. [1]

نختار ثلاثة أعداد مستقلة عن أي نموذج:5 و 9 و 13. نرتبها في قائمة أحادية البعد، ذات ثلاثة مواضع متتابعة. قولنا إن الصورة ترسمها أفقيا لا يضيف إلى البيانات محورا للصفوف؛ اتجاه الرسم على الورق غير عدد المحاور المعلن.

لذلك نقرأ الشكل قبل أن نستدل من شكل العرض. قد يعرض محرر قائمة واحدة في سطر، لكن هذا لا يجعلها مصفوفة بصف واحد وثلاثة أعمدة إلا إذا أنشأنا ذلك التنظيم ذي البعدين فعلا.

ماذا يعني نقل الأعداد الثلاثة؟

في المتجه الأحادي، النقل لا يضيف سوى اسم عملية إلى التنظيم نفسه تحت العقد المذكور: الأعداد الثلاثة ما زالت على محور واحد. لا يصح وصف الناتج بأنه عمود ذو بعدين لمجرد أننا كتبنا transpose.

أما إذا بدأنا بمصفوفة صف، فيها صف واحد وثلاثة أعمدة، فلدينا محوران يمكن تبادلهما. بعد النقل يصبح لدينا ثلاثة صفوف وعمود واحد؛ الأول يحوي 5 والثاني 9 والثالث 13.

نحافظ على ترتيب الأعداد في هذا المثال، ولا نغير قيمها أو نقيس ذاكرة مشتركة بين الكائنات. المقارنة تشرح الشكل الناتج من التنظيمين، دون استدعاء NumPy أو الادعاء أن مخرجات نموذج جرى تحويلها.

التنظيم قبل النقلعدد المحاورالتنظيم بعد النقل
بعد واحد بطول 31بعد واحد بطول 3
صف واحد وثلاثة أعمدة2ثلاثة صفوف وعمود واحد

كيف نصنع العمود إذا بدأنا من بعد واحد؟

يعطي التوثيق إضافة بعد جديد وسيلة لتحويل المتجه الأحادي إلى عمود ثنائي الأبعاد، ويعرض أيضا إنشاء صف ثنائي ثم نقله. [1]

في مثال الأعداد الثلاثة، نعلن أن العمود المطلوب يحوي ثلاثة صفوف وعمودا واحدا. المحور الجديد ذو طول واحد، وليس بطاقة رابعة أو قيمة عددية نضيفها إلى القائمة. ما تغير عدد المحاور، لا عدد الأعداد.

ونفرق هذا عن نقل المصفوفة الصفية؛ هناك كان المحوران موجودين، ثم بدلنا موضعيهما. قد يصل المساران إلى تنظيم العمود نفسه في المثال، لكن تسمية العملية تساعد على بيان ما كان موجودا قبلها.

أي تنظيم يحتاجه الجزء التالي؟

نقترح وصف المدخل المقبل بكلمات صريحة: متجه من ثلاث قيم، أم صف واحد بثلاث ميزات، أم ثلاث حالات لكل منها قيمة واحدة؟ معنى الحالات والميزات قرار في المهمة، وليس نتيجة يفرضها الرقم 3 وحده.

إذا كانت المهمة تطلب متجها أحاديا، فلا نحوله إلى عمود بوصف ذلك إصلاحا عاما. وإذا كانت تطلب ثلاثة صفوف، نعلن المحور الإضافي ونحفظ صلة كل موضع بسجله. التشابه البصري بين قائمة وصف لا يغني عن هذه المراجعة.

لم نشغل نموذجا أو مكتبة، ولا نثبت توافق أداة أخرى أو جودة تنبؤ. الرسم والجدول يميزان إضافة محور من نقل محورين، حتى لا ننسب إلى نقل البعد الواحد تغييرا لا ينص عليه عقده.

المصادر ومتابعة القراءة

  1. NumPy: transpose (يفتح في نافذة جديدة)numpy.org

أُعدّ هذا المقال بصياغة عربية أصلية بالاستناد إلى المصادر أعلاه، وهو مدخل تمهيدي إلى الموضوع. اقرأ منهجية المحتوى وحدوده.