اذهب إلى المحتوى

السؤال

نشر

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

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']])

 

Recommended Posts

  • 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']]

 

  • 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')
"""

 

انضم إلى النقاش

يمكنك أن تنشر الآن وتسجل لاحقًا. إذا كان لديك حساب، فسجل الدخول الآن لتنشر باسم حسابك.

زائر
أجب على هذا السؤال...

×   لقد أضفت محتوى بخط أو تنسيق مختلف.   Restore formatting

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   جرى استعادة المحتوى السابق..   امسح المحرر

×   You cannot paste images directly. Upload or insert images from URL.

  • إعلانات

  • تابعنا على



×
×
  • أضف...