تحويل مصفوفة عشرية إلى مصفوفة ثنائية في SCIPY

StackOverflow https://stackoverflow.com/questions/1524023

  •  19-09-2019
  •  | 
  •  

سؤال

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

سؤالي: هل هناك طريقة سريعة مريحة للحد من المصفوفة العشرية إلى مصفوفة ثنائية.

مثل ذلك:

26, 3, 0
3, 195, 1
0, 1, 17

يصبح:

1, 1, 0
1, 1, 1
0, 1, 1
هل كانت مفيدة؟

المحلول

تطبيق scipy.sign وظيفة إلى كل خلية في المصفوفة.

عدل] CUDOS ل speciousfool.:

لو x هو مصفوفة الخاص بك ثم scipy.sign(x) يمنحك المصفوفة الثنائية.

نصائح أخرى

يمكنك القيام بما يلي:

>>> import scipy
>>> a = scipy.array((12, 0, -1, 23, 0))
array([12,  0, -1, 23,  0])
>>> (a != 0).astype(int)
array([1, 0, 1, 1, 0])

السحر في a != 0 جزء. يمكنك تطبيق تعبيرات منطقية على صفائف وسوف ترجع مجموعة من المنطمنون. ثم يتم تحويلها إلى Ints.

يمكنك أيضا تجربة هذا:

>>>x,y = scipy.where(yourMatrix>0)
>>>yourMatrix[:,:] = 0
>>>yourMatrix[x,y] = 1

أعتقد أن هذا سيكون أسرع أيضا.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top