python - numpy شرح
كيفية طباعة مجموعة كاملة NumPy؟ (8)
عندما أقوم بطباعة مجموعة متكتلة ، أحصل على تمثيل مبتور ، لكنني أرغب في المصفوفة الكاملة.
هل هناك أي طريقة للقيام بذلك؟
أمثلة:
>>> numpy.arange(10000)
array([ 0, 1, 2, ..., 9997, 9998, 9999])
>>> numpy.arange(10000).reshape(250,40)
array([[ 0, 1, 2, ..., 37, 38, 39],
[ 40, 41, 42, ..., 77, 78, 79],
[ 80, 81, 82, ..., 117, 118, 119],
...,
[9880, 9881, 9882, ..., 9917, 9918, 9919],
[9920, 9921, 9922, ..., 9957, 9958, 9959],
[9960, 9961, 9962, ..., 9997, 9998, 9999]])
إذا كان الصفيف كبيرًا جدًا بحيث لا يمكن طباعته ، فإن NumPy يتخطى تلقائيًا الجزء المركزي من الصفيف ويقوم فقط بطباعة الزوايا: لتعطيل هذا السلوك وإجبار NumPy على طباعة الصفيف بأكمله ، يمكنك تغيير خيارات الطباعة باستخدام set_printoptions
.
>>> np.set_printoptions(threshold='nan')
أو
>>> np.set_printoptions(edgeitems=3,infstr='inf',
... linewidth=75, nanstr='nan', precision=8,
... suppress=False, threshold=1000, formatter=None)
يمكنك أيضًا الرجوع إلى وثائق numpy وثائق numpy "أو جزء" لمزيد من المساعدة.
إليك طريقة لمرة واحدة للقيام بذلك ، وهو أمر مفيد إذا كنت لا ترغب في تغيير الإعدادات الافتراضية:
def fullprint(*args, **kwargs):
from pprint import pprint
import numpy
opt = numpy.get_printoptions()
numpy.set_printoptions(threshold='nan')
pprint(*args, **kwargs)
numpy.set_printoptions(**opt)
الإجابات السابقة هي الإجابات الصحيحة ، ولكن كبديل أضعف يمكنك تحويلها إلى قائمة:
>>> numpy.arange(100).reshape(25,4).tolist()
[[0, 1, 2, 3], [4, 5, 6, 7], [8, 9, 10, 11], [12, 13, 14, 15], [16, 17, 18, 19], [20, 21,
22, 23], [24, 25, 26, 27], [28, 29, 30, 31], [32, 33, 34, 35], [36, 37, 38, 39], [40, 41,
42, 43], [44, 45, 46, 47], [48, 49, 50, 51], [52, 53, 54, 55], [56, 57, 58, 59], [60, 61,
62, 63], [64, 65, 66, 67], [68, 69, 70, 71], [72, 73, 74, 75], [76, 77, 78, 79], [80, 81,
82, 83], [84, 85, 86, 87], [88, 89, 90, 91], [92, 93, 94, 95], [96, 97, 98, 99]]
بالنسبة لهؤلاء الذين يرغبون في الاستيراد باسم np:
import numpy as np
np.set_printoptions(threshold=np.nan)
سوف تعمل أيضا
لتوضيح رد ريد
import numpy
numpy.set_printoptions(threshold=numpy.nan)
لاحظ أن الرد كما هو مذكور أعلاه يعمل بشكل أولي from numpy import *
، وهو أمر غير مستحسن. هذا يعمل أيضا بالنسبة لي:
numpy.set_printoptions(threshold='nan')
للحصول على الوثائق الكاملة ، راجع http://docs.scipy.org/doc/numpy/reference/generated/numpy.set_printoptions.html .
لنفترض أن لديك مجموعة متصالبة
arr = numpy.arange(10000).reshape(250,40)
إذا كنت ترغب في طباعة الصفيف الكامل بطريقة واحدة (بدون تبديل np.set_printoptions) ، لكنك تريد شيئًا أبسط (أقل كود) من مدير السياق ، فقط افعله
for row in arr:
print row
هذا يبدو وكأنه كنت تستخدم مستهتر.
إذا كان الأمر كذلك ، فيمكنك إضافة:
import numpy as np
np.set_printoptions(threshold='nan')
هذا سوف تعطيل الطباعة الزاوية. لمزيد من المعلومات ، راجع هذا البرنامج التعليمي NumPy .
numpy.savetxt
numpy.savetxt(sys.stdout, numpy.arange(10000))
أو إذا كنت تحتاج إلى سلسلة:
import StringIO
sio = StringIO.StringIO()
numpy.savetxt(sio, numpy.arange(10000))
s = sio.getvalue()
print s
تنسيق الإخراج الافتراضي هو:
0.000000000000000000e+00
1.000000000000000000e+00
2.000000000000000000e+00
3.000000000000000000e+00
...
ويمكن تكوينه مع مزيد من الحجج.
تم اختباره على Python 2.7.12 ، numpy 1.11.1.