• 0

تحويل قائمة من عناصر tuple إلى مصفوفة Numpy

لنفترض أن لدي قائمة بالشكل التالي:

lst =[('a', 0), ('b', 1), ('c', 2), ('d', 3)]

كيف يمكنني تحويل القائمة السابقة إلى مصفوفة Numpy بحيث يكون كل حرف من الحروف (a, b, c, d) عبارة عن أول صف في المصفوفة، والأرقام (0, 1, 2, 3) هي ثاني صف، بحيث تصبح النتيحة كالتالي:

array([['a', 'b', 'c', 'd'],
       ['0', '1', '2', '3']])

 

1 شخص أعجب بهذا

انشر على الشّبكات الاجتماعية


رابط هذه المساهمة
شارك على الشبكات الإجتماعية
  • 2

1. تحويل ال tuple إلى قوائم ثم تحويل القائمة إلى مصفوفة، ثم تنفيذ عملية Transpose عليها (المنقول):

tuples = [('a', 2), ("b", 4), ("c", 6)]
lists = [list(x) for x in tuples]
print(lists)
# [['a', 2], ['b', 4], ['c', 6]]
arr=np.array(lists)
arr.T
"""
array([['a', 'b', 'c'],
       ['2', '4', '6']], dtype='<U1')
"""

2.بشكل مشابه للطريقة السابقة لكن هنا سوف نستبدل حلقة ال for بتعليمة ال map:

tuples = [('a', 2), ("b", 4), ("c", 6)]
lists = list(map(list, tuples))
print(lists)
# [['a', 2], ['b', 4], ['c', 6]]
arr=np.array(lists)
arr.T
"""
array([['a', 'b', 'c'],
       ['2', '4', '6']], dtype='<U1')
"""

3.تحويلها  إلى قاموس، ثم تحويلها إلى مصفوفة، ثم تنفيذ عملية Transpose عليها (المنقول):

tuples = [('a', 2), ("b", 4), ("c", 6)]
dic=dict(tuples)
print(dic) # {'a': 2, 'b': 4, 'c': 6}
# [['a', 2], ['b', 4], ['c', 6]]
arr=np.array(dic).T
arr
# array({'a': 2, 'b': 4, 'c': 6}, dtype=object)

4. أو بالشكل التالي، حيث نقوم بتحويل القائمة إلى قاموس، ثم نخزن قيمه (القيم وليس المفاتيح)، ثم نحول الخرج ليصبح قائمة ثم نحوله لمصفوفة، وأخيراً نحوله من البعد (,3) إلى البعد (3,1) أي أصبحت مصفوفة ثنائية ثم نقوم باستخراج المفاتيح و نضعهم في مصفوفة (كما في المرحلة السابقة لكن هنا نستخرج المفاتيح ونخزنها) والغاية من ذلك هي لربط  النتائج ووضعها في مصفوقة واحدة، حيث أن المفاتيح للقاموس الذي تم إنتاجه هي ال a  c أما القيم فهي القيم التي تقابلها:

tuples = [('a', 2), ("b", 4), ("c", 6)]
values=np.array(list(dict(tuples).values())).reshape(1,-1)
# dict_values([2, 4, 6])
keys=np.array(list(dict(tuples).keys())).reshape(1,-1)
# dict_keys(['a', 'b', 'c'])
np.concatenate((keys, values), axis=0)
"""
array([['a', 'b', 'c'],
       ['2', '4', '6']], dtype='<U21')
"""

 

2 اشخاص أعجبوا بهذا

انشر على الشّبكات الاجتماعية


رابط هذه المساهمة
شارك على الشبكات الإجتماعية
  • 0

يمكننا أن نستخلص من القائمة مصفوفة بالعناصر الأولى (ترتريب أول) ومصفوفة بالعناصر الثانية (ترتيب ثاني)

[i[0] for i in lst] // تعيد مصفوفة بالعناصر التي لها ترتريب أول

ثم نقوم بدمجهم في مصفوفة numpy ثنائية الأبعاد باستخدام الدالة stack

import numpy as np

lst =[('a', 0), ('b', 1), ('c', 2), ('d', 3)]

arr1 = np.array([i[0] for i in lst])

arr2 = np.array([i[1] for i in lst])

arr = np.stack((arr1, arr2))

print(arr)

والناتج:

[['a' 'b' 'c' 'd']
 ['0' '1' '2' '3']]

 

1 شخص أعجب بهذا

انشر على الشّبكات الاجتماعية


رابط هذه المساهمة
شارك على الشبكات الإجتماعية

يجب أن تكون عضوًا لدينا لتتمكّن من التعليق

انشاء حساب جديد

يستغرق التسجيل بضع ثوان فقط


سجّل حسابًا جديدًا

تسجيل الدخول

تملك حسابا مسجّلا بالفعل؟


سجّل دخولك الآن