"إذا أراد العامل أن يؤدي عمله بشكل جيد، فعليه أولاً أن يشحذ أدواته." - كونفوشيوس، "مختارات كونفوشيوس. لو لينجونج"
الصفحة الأمامية > برمجة > كيفية دمج مصفوفات NumPy مع أنواع البيانات المختلفة مع الحفاظ على أنواع البيانات؟

كيفية دمج مصفوفات NumPy مع أنواع البيانات المختلفة مع الحفاظ على أنواع البيانات؟

تم النشر بتاريخ 2024-11-07
تصفح:248

How to Combine NumPy Arrays with Different Datatypes While Preserving Data Types?

الجمع بين المصفوفات وأنواع البيانات المتعددة في NumPy

تطرح الرغبة في سلسلة المصفوفات التي تحتوي على أنواع بيانات مختلفة في مصفوفة واحدة مع أنواع البيانات المقابلة في كل عمود تحديا. من الأساليب الشائعة، باستخدام np.concatenate()، للأسف تحويل المصفوفة بأكملها إلى نوع بيانات سلسلة، مما يؤدي إلى عدم كفاءة الذاكرة.

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

مصفوفات السجلات

تسمح مصفوفات السجلات بالوصول إلى حقول البيانات الفردية من خلال السمات. من خلال تحديد نوع البيانات لكل حقل، يمكن دمج أنواع بيانات متعددة في صفيف واحد:

import numpy as np

a = np.array(['a', 'b', 'c', 'd', 'e'])
b = np.arange(5)
records = np.rec.fromarrays((a, b), names=('keys', 'data'))

print(records)

الإخراج:

rec.array([('a', 0), ('b', 1), ('c', 2), ('d', 3), ('e', 4)], 
      dtype=[('keys', '|S1'), ('data', '<i8')])

المصفوفات المنظمة

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

arr = np.array([('a', 0), ('b', 1)], 
                      dtype=([('keys', '|S1'), ('data', 'i8')]))

print(arr)

الإخراج:

array([('a', 0), ('b', 1)], 
      dtype=[('keys', '|S1'), ('data', '<i8')])

الاختيار بين السجل والمصفوفات المنظمة

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

بيان الافراج يتم استنساخ هذه المقالة في: 1729504697 إذا كان هناك أي انتهاك ، فيرجى الاتصال بـ [email protected] لحذفه.
أحدث البرنامج التعليمي أكثر>

تنصل: جميع الموارد المقدمة هي جزئيًا من الإنترنت. إذا كان هناك أي انتهاك لحقوق الطبع والنشر الخاصة بك أو الحقوق والمصالح الأخرى، فيرجى توضيح الأسباب التفصيلية وتقديم دليل على حقوق الطبع والنشر أو الحقوق والمصالح ثم إرسالها إلى البريد الإلكتروني: [email protected]. سوف نتعامل مع الأمر لك في أقرب وقت ممكن.

Copyright© 2022 湘ICP备2022001581号-3