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

تحويل قائمة بايثون إلى مصفوفة numpy وملئ الفراغات

Fahmy Mostafa

السؤال

تحويل قائمة بايثون إلى مصفوفة باستخدام مكتبة numpy يجعل من المصفوفة المولدة من نوع object كالتالي:

v = [[1], [1, 2]]
np.array(v)
>>> array([[1], [1, 2]], dtype=object)

وعندما أحاول أن أجبرها على تعيين نوع معين كالتالي:

np.array(v, dtype=np.int32)

يظهر لي الخطأ التالي:

ValueError: setting an array element with a sequence. The requested array has an inhomogeneous shape after 1 dimensions. The detected shape was (2,) + inhomogeneous part.

ما هي الطريقة التي تمكني من تحويل المصفوفة إلى نوع int32 بدون مشكلة؟

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

Recommended Posts

  • 1

يمكنك أن تقوم بملئ الفراغات في المصفوفة من خلال دالة zip_longest من مكتبة itertools كالتالي:

import itertools
np.array(list(itertools.zip_longest(*v, fillvalue=0))).T

"""
Output:

array([[1, 0],
       [1, 2]])
       
"""

بهذه الطريقة يمكنك أن تقوم بمليء المصفوفة بقيمة إفتراضية (صفر في هذه الحالة) في الأجزاء الناقصة.

ملاحظة: إن كنت تستعمل Python الإصدار 2 فسيكون اسم الدالة هو izip_longest وليس zip_longest

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

  • 1

حسب اعتقادي فإن مصفوفات نمباي تتعامل مع بيانات المصفوفات الغير متجانسة ك "object" ولايمكنها التعامل معها ك int أو أي نمط آخر، لذا فالحل الوحيد هو حشر قيم في مصفوفتك (أصفار مثلاً)، ويمكنك القيام بذلك من خلال التابع pad_sequences كالتالي:

import numpy as np
v = [[1], [1, 2]]
from keras import preprocessing
maxlen=2
v=preprocessing.sequence.pad_sequences(v, maxlen=maxlen)
print(v.dtype) # int32
v
"""
array([[0, 1],
       [1, 2]])
"""

 

تم التعديل في بواسطة Ali Haidar Ahmad
رابط هذا التعليق
شارك على الشبكات الإجتماعية

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

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

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

×   لقد أضفت محتوى بخط أو تنسيق مختلف.   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.

  • إعلانات

  • تابعنا على



×
×
  • أضف...