python - কিভাবে সম্পূর্ণ NumPy অ্যারে ছিনতাই ছাড়া মুদ্রণ করতে?




arrays options (10)

NumPy 1.15 বা নতুন

যদি আপনি NumPy 1.15 (2018-07-23 প্রকাশ) বা নতুন ব্যবহার করেন, তবে আপনি printoptions প্রসঙ্গ পরিচালক ব্যবহার করতে পারেন:

with numpy.printoptions(threshold=numpy.inf):
    print(arr)

(অবশ্যই, numpy দ্বারা numpy প্রতিস্থাপন যদি আপনি numpy আমদানি কিভাবে)

কনটেক্সট ম্যানেজারের ব্যবহার ( with অবরোধ) নিশ্চিত করে যে কনটেক্সট পরিচালকের সমাপ্তির পরে, মুদ্রণের বিকল্পগুলি ব্লক শুরু হওয়ার আগে যা যা ছিল তার দিকে ফিরে যাবে। এটি সেটিং অস্থায়ী নিশ্চিত করে এবং শুধুমাত্র ব্লকের মধ্যে কোড প্রয়োগ করে।

প্রসঙ্গ ম্যানেজারের বিশদ বিবরণের জন্য numpy.printoptions ডকুমেন্টেশনটি দেখুন এবং এটি কী সমর্থন করে।

যখন আমি একটি numpy অ্যারে মুদ্রণ করি, আমি একটি ছোট্ট উপস্থাপনা পেতে, কিন্তু আমি পূর্ণ অ্যারে চাই।

এই কাজ করতে কোন উপায় আছে কি?

উদাহরণ:

>>> 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 সংস্করণ 1.16 থেকে, বিস্তারিত জানতে GitHub টিকেট 12251 দেখুন

from sys import maxsize
from numpy import set_printoptions

set_printoptions(threshold=maxsize)

আপনি numpy ব্যবহার করছেন মত ​​এই শব্দ।

যদি এই ক্ষেত্রে, আপনি যোগ করতে পারেন:

import numpy as np
np.set_printoptions(threshold=np.nan)

যে কোণার মুদ্রণ নিষ্ক্রিয় করা হবে। আরো তথ্যের জন্য, এই NumPy টিউটোরিয়াল দেখুন


আপনি সর্বদা সমস্ত আইটেম মুদ্রণ করা চাই না, বিশেষ করে বড় অ্যারের জন্য।

আরো আইটেম প্রদর্শন করার একটি সহজ উপায়:

In [349]: ar
Out[349]: array([1, 1, 1, ..., 0, 0, 0])

In [350]: ar[:100]
Out[350]:
array([1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 0, 0, 1,
       1, 1, 0, 0, 0, 0, 0, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
       0, 0, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 0, 0, 0, 0,
       0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1,
       0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1])

কাস্টম অ্যারে <1000 ডিফল্টরূপে এটি সূক্ষ্ম কাজ করে।


এটি করার জন্য এখানে একটি একান্ত উপায় রয়েছে, যদি আপনি আপনার ডিফল্ট সেটিংস পরিবর্তন করতে না চান তবে এটি দরকারী:

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 অ্যারে আছে

 arr = numpy.arange(10000).reshape(250,40)

যদি আপনি পুরো অ্যারেটি এক-প্রান্তে মুদ্রণ করতে চান (np.set_printoptions টগল না করে) তবে কনটেক্সট ম্যানেজারের চেয়ে কিছু সহজ (কম কোড) চান তবে

for row in arr:
     print row 

যদি একটি অ্যারে মুদ্রণ করা খুব বড় হয়, 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 ডকুমেন্টেশন উল্লেখ করতে পারেন।


সর্বাধিক সংখ্যক কলাম থেকে এই answer পরিপূরক ( numpy.set_printoptions(threshold=numpy.nan) দিয়ে নির্দিষ্ট করা), প্রদর্শনের জন্য অক্ষরের একটি সীমাও রয়েছে। কিছু পরিবেশ যেমন প্যাথন বাশ থেকে কল করার সময় (ইন্টারেক্টিভ সেশনের পরিবর্তে), এটি নিম্নরূপ প্যারামিটার linewidth সেট করে সংশোধন করা যেতে পারে।

import numpy as np
np.set_printoptions(linewidth=2000)    # default = 75
Mat = np.arange(20000,20150).reshape(2,75)    # 150 elements (75 columns)
print(Mat)

এই ক্ষেত্রে, আপনার উইন্ডো লাইন মোড়ানো অক্ষর সংখ্যা সীমিত করা উচিত।

আউটপুট উইন্ডোতে ফলাফলগুলি দেখতে এবং আউটপুট উইন্ডোতে ফলাফল দেখতে চাইলে সেখানে আপনার জন্য "word_wrap": false বিল্ড বিকল্প যুক্ত করা উচিত "word_wrap": false -বিল্ড ফাইল [ source ] থেকে "word_wrap": false


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।


পল মূল্য হিসাবে একটি প্রসঙ্গ ম্যানেজার ব্যবহার করে সুপারিশ

import numpy as np


class fullprint:
    'context manager for printing full numpy arrays'

    def __init__(self, **kwargs):
        kwargs.setdefault('threshold', np.inf)
        self.opt = kwargs

    def __enter__(self):
        self._opt = np.get_printoptions()
        np.set_printoptions(**self.opt)

    def __exit__(self, type, value, traceback):
        np.set_printoptions(**self._opt)

a = np.arange(1001)

with fullprint():
    print(a)

print(a)

with fullprint(threshold=None, edgeitems=10):
    print(a)





output-formatting