MaxReve نشر 4 ديسمبر 2015 أرسل تقرير نشر 4 ديسمبر 2015 أريد تحويل مصفوفة NumPy إلى قائمة في بايثون (مثل هذه [[1,2,3],[4,5,6]]) فهل هنالك طريقة سريعة وبسيطة لفعل ذلك؟ مثلا عن طريق دالة أو ما شابه؟ اقتباس
0 هشام رزق الله نشر 4 ديسمبر 2015 أرسل تقرير نشر 4 ديسمبر 2015 لدي مصفوفات NumPy تابع tolist() لتحويل مصفوفة NumPy إلى قائمة في لغة بايثون، هذا هو تعريفها من التوثيق الرسمي:يُرجع هذا التابع نسخة من بيانات المصفوفة كقائمة بايثون (متداخلة)،و إن عناصر البيانات يتم تحويلها إلى أقرب متوافق من أنواع بايثون.وكمثال بسيط على استخدام هذا التابع لنستعمله في تحويل المثال الذي ذكرته في سؤالك كما في المثال التالي:import numpy as np >>> np.array([[1,2,3],[4,5,6]]).tolist() [[1, 2, 3], [4, 5, 6]] لاحظ أننا حوّلنا إلى مصفوفة Numpy ومن ثم حولناه إلى قائمة. اقتباس
0 Ali Haidar Ahmad نشر 25 مارس 2022 أرسل تقرير نشر 25 مارس 2022 يمكنك أيضًا استخدام الدالة المُضمنة في بايثون list. مثال1: تحويل مصفوفة أحادية البعد إلى قائمة: import numpy as np # مصفوفة أحادية arr = np.array([1,2,3,4]) # طياعتها print("Numpy array: ", arr) # طباعة نوعها print("Type: ",type(arr)) # تحويلها لقائمة ls = list(arr) print("\nList: ", ls) print("Type: ",type(ls)) الخرج: Numpy array: [1 2 3 4] Type: <class 'numpy.ndarray'> List: [1, 2, 3, 4] Type: <class 'list'> مثال2: تحويل مصفوفة ثنائية إلى قائمة: import numpy as np # تعريف مصفوفة arr = np.array([[1,2,3],[4,5,6]]) # طباعتها print("Numpy array: ", arr) # طباعة نوعها print("Type: ",type(arr)) # تحويلها لقائمة ls = list(arr) print("\nList: ", ls) print("Type: ",type(ls)) الخرج: Numpy array: [[1 2 3] [4 5 6]] Type: <class 'numpy.ndarray'> List: [array([1, 2, 3]), array([4, 5, 6])] Type: <class 'list'> كما يمكنك استخدام الدالة tolist، كما في الإجابة السابقة، لكن هناك فرق بين الدالتين يتجلى في حالة المصفوفات متعددة الأبعاد، فلو استخدمنا الدالة tolist مع المصفوفة الثنائية السابقة، سيكون الخرج كالتالي: Numpy array: [[1 2 3] [4 5 6]] Type: <class 'numpy.ndarray'> List: [[1, 2, 3], [4, 5, 6]] Type: <class 'list'> لاحظ أن هناك اختلاف في شكل الخرج بين الدالتين، لكن هناك اختلاف آخر، فباستخدام الدالة tolist، يتم تحويل عناصر البيانات إلى أقرب أنواع بايثون المضمنة المتوافقة معها، بينما يتم الاحتفاظ بأنواع عناصر البيانات عند استخدام list. انظر إلى المثال التالي: import numpy as np arr = np.array([1,2,3,4]) ls1 = arr.tolist() ls2 = list(arr) print("ls1: ", ls1) print("Type of items: ",[type(i) for i in ls1]) print("\nls2: ", ls2) print("Type of items: ",[type(i) for i in ls2]) الخرج: ls1: [1, 2, 3, 4] Type of items: [<class 'int'>, <class 'int'>, <class 'int'>, <class 'int'>] ls2: [1, 2, 3, 4] Type of items: [<class 'numpy.int32'>, <class 'numpy.int32'>, <class 'numpy.int32'>, <class 'numpy.int32'>] لاحظ أنه في القائمة التي تم إرجاعها بواسطة دالة tolist، تم تحويل كل عنصر إلى أقرب نوع بيانات متوافق معه، بينما في القائمة التي تم إرجاعها بواسطة list، يحتفظ كل عنصر بنوعه. وهذا فرق مهم جدًا في بعض الحالات. اقتباس
السؤال
MaxReve
أريد تحويل مصفوفة NumPy إلى قائمة في بايثون (مثل هذه [[1,2,3],[4,5,6]]) فهل هنالك طريقة سريعة وبسيطة لفعل ذلك؟ مثلا عن طريق دالة أو ما شابه؟
2 أجوبة على هذا السؤال
Recommended Posts
انضم إلى النقاش
يمكنك أن تنشر الآن وتسجل لاحقًا. إذا كان لديك حساب، فسجل الدخول الآن لتنشر باسم حسابك.