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

السؤال

نشر

أشعر بالفضول لمعرفة ما إذا كان هناك أي طريقة لطباعة numpy.arrays ، على سبيل المثال ، بطريقة مشابهة لهذه:

[ 0.71 0.65 0.46 0.13 0.87 0.54 0.77 0.37 0.1  0.66 ]

بدلًا من الطريقة العادية:

array([0.71, 0.65, 0.46, 0.13, 0.87, 0.54, 0.77, 0.37, 0.1 , 0.66])

إذا كنت أرغب في طباعة مصفوفة الصفوف الصغيرة ، فإنها تطبع العديد من الكسور العشرية floats، غالبًا بتنسيق "علمي scientific" ، وهو أمر يصعب قراءته حتى بالنسبة للمصفوفات ذات الأبعاد القليلة. ومع ذلك ، يبدو أنه يجب طباعة numpy.array كنص

>>> a = np.random.random(10)
>>> a
array([0.71244268, 0.65202232, 0.45514279, 0.12868502, 0.86755307,
       0.54365432, 0.76884071, 0.37287693, 0.10350725, 0.66008725])
>>> str(a)
'[0.71244268 0.65202232 0.45514279 0.12868502 0.86755307 0.54365432\n 0.76884071 0.37287693 0.10350725 0.66008725]'

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

Recommended Posts

  • 1
نشر

بالنسبة لسؤالك فإنه ينقسم الي جزئين أساسين:

اذا أردت طباعة المصفوفة بدون فواصل، فهناك حلان:

  • الاول أن تقوم فقط باستخدام أمر print دون أي شئ أخر، وذلك لانه هناك اختلاف بين شكل المصفوفة المخزنه في الذاكرة والتي تظهر عند استدعائها باستخدام كتابة اسمها كما في المثال التالي:
a = np.random.random(10)
>>> a
array([0.71244268, 0.65202232, 0.45514279, 0.12868502, 0.86755307,
       0.54365432, 0.76884071, 0.37287693, 0.10350725, 0.66008725])

وذلك لانه يقوم بطباعتها بالشكل المخزن في الذاكرة،أما اذا اردت طباعتها من دون فواصل، فقط أستخدم print كالتالي:

a = np.random.random(10)
>>> print(a)
array([0.71244268 0.65202232 0.45514279 0.12868502 0.86755307
       0.54365432 0.76884071 0.37287693 0.10350725 0.66008725])
  • الطريقة الثانية هي استخدام الامر print مع اعطاءه بعض الخصائص الاضافية كالتالي:
print(*data, sep='')

حيث أن sep يوضع بعدها الشكل الذي تريد أن تقوم بفصل العناصر به، فهنا وضعنا علامات تنصيص بينها فارغ أي أنه الفواصل بين عناصر المصفوفة هي الفراغ space.

بالنسبة للتحكم بدقة الاخراج أو الدقة، فيمكنك تحديد عدد الارقام العشرية التي تريد ظهورها عن طريق:

np.set_printoptions(precision=2)

حيث أن الرقم بعد precision  يوضح عددالاربام العشرية التي تريد ظهورها في النواتج.

  • 1
نشر (معدل)

انظر ببساطة:

array = np.random.random(11)
print(array)
""" 
[0.68454984 0.29564049 0.43585867 0.08240091 0.64254513 0.6644243
 0.19431044 0.8343987  0.80227567 0.3568269  0.73074224]
"""
# أما
array = np.random.random(11)
array
"""
array([0.68454984, 0.29564049, 0.43585867, 0.08240091, 0.64254513,
       0.6644243 , 0.19431044, 0.8343987 , 0.80227567, 0.3568269 ,
       0.73074224])
"""

أي عندما نستخدم التعليمة print سيظهر الخرج كما تريده،  أما يالنسبة للتحكم بدقة الإخراج لل floatting point  فيمكنك استخدام set_printoptions واستخدام الوسيطة precision وتحديد العدد الذي تريد إظهاره:

import numpy as np
array = np.random.random(11)
print(array)
"""
[0.44945536 0.56544673 0.82679165 0.41418793 0.465158   0.34722955
 0.75272122 0.01321709 0.24561376 0.86812281 0.761384  ]
"""
np.set_printoptions(precision=3)
print(array)
"""
[0.449 0.565 0.827 0.414 0.465 0.347 0.753 0.013 0.246 0.868 0.761]
"""

 

تم التعديل في بواسطة Ali Haidar Ahmad
  • 0
نشر

لطباعة مصفوفة بدون الفواصل، استخدم الطريقة التالية:

data = [7, 7, 7, 7]

print(*data, sep='')

حيث أن المعامل sep هو الفاصل بين مخرجات الطباعة.

وإن استخدمت قائمة في بايثون، يمكن استخدام:

print(str(listData).strip('[]').replace('\'', ''))

حيث نتخلص من الأقواس و الفواصل.

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

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

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

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

  • إعلانات

  • تابعنا على



×
×
  • أضف...