2012-09-10 13 views
8

मैं वर्तमान में निम्नलिखित स्निपेट है:मैं एक numpy मैट्रिक्स का एक अच्छा आउटपुट कैसे बना सकता हूं?

#!/usr/bin/python 
# -*- coding: utf-8 -*- 

import numpy 
from numpy import linalg 

A = [[1,2,47,11],[3,2,8,15],[0,0,3,1],[0,0,8,1]] 
S = [[113,49,2,283],[-113,0,3,359],[0,5,0,6],[0,20,0,12]] 

A = numpy.matrix(A) 
S = numpy.matrix(S) 

numpy.set_printoptions(precision=2, suppress=True, linewidth=120) 
print("S^{-1} * A * S") 
print(linalg.inv(S) * A * S) 

जो इस उत्पादन का उत्पादन:

python output

वहाँ एक मानक तरीका एक आउटपुट निम्न के समान निर्माण करने के लिए है? मैं यह आउटपुट कैसे प्राप्त कर सकता हूं?

[[ -1 -0.33 0 0] 
[ 0  1  0 0] 
[ 0 -648  4 0] 
[ 0  6.67 0 5]] 

क्या अलग है?

  • कम से कम स्तंभ i का अंतिम वर्ण और स्तंभ i+1 का पहला वर्ण के बीच रिक्त स्थान दो, लेकिन यह करता है, तो अधिक की जरूरत है और अधिक हो सकता है
  • डॉट्स गठबंधन कर रहे हैं ((NumPy उत्पादन दो रिक्त स्थान बनाता है) गठबंधन हैं, लेकिन BetterPythonConsole यह भोजनालयों तक)
  • नहीं -0 लेकिन 0
  • नहीं 0. लेकिन 0
  • के फ़ॉन्ट सेटिंग

संपादित: यह रूप में अगर अजगर कंसोल, जो gEdits के साथ शुरू हो जाता है जब मैं टर्मिनल से इसे शुरू BetterPythonConsole प्लगइन, कुछ अजगर से अलग करता है लगता है।

यह

[email protected]:~/Desktop$ python matrixScript.py 
S^{-1} * A * S 
[[ -1.  -0.33 0.  -0. ] 
[ 0.  -1.  -0.  0. ] 
[ 0. -648.  4.  -0. ] 
[ 0.  6.67 0.  5. ]] 

ऊपर स्क्रिप्ट के पाठ के रूप में उत्पादन prettyprint के साथ है:

S^{-1} * A * S 
matrix([[ -1. , -0.33, 0. , -0. ], 
     [ 0. , -1. , -0. , 0. ], 
     [ 0. , -648. , 4. , -0. ], 
     [ 0. , 6.67, 0. , 5. ]]) 

यह defenitely भी बदतर है, लेकिन यह एक कोशिश के लायक था।

+0

[numpy.array की सुंदर प्रिंटिंग] के संभावित डुप्लिकेट (http://stackoverflow.com/questions/2891790/pretty-printing-of-numpy-array) – Chris

+2

यह डुप्लिकेट नहीं है। मैंने इस प्रश्न (और उत्तर) को पढ़ा है, लेकिन यह पर्याप्त स्वरूपण प्रदान नहीं करता है। –

+0

क्या आपने 'pprint' की कोशिश की? http://stackoverflow.com/questions/1523660/how-to-print-a-list-in-python-nicely –

उत्तर

4

यदि आप numpy 1.8.x का उपयोग करते हैं तो आप formatter पैरामीटर के साथ स्वरूपण को कस्टमाइज़ कर सकते हैं। उदाहरण के लिए, की स्थापना:

numpy.set_printoptions(formatter={'float': lambda x: 'float: ' + str(x)}) 

सभी तैरता float: 3.0, या float: 12.6666666666 की तरह मुद्रित किया जाएगा।

दुर्भाग्य से मेरे पास अभी भी 1.6.1 स्थापित है और यह विकल्प प्रदान नहीं किया गया है, इसलिए मैं वांछित आउटपुट प्राप्त करने के लिए इसका उपयोग नहीं कर पा रहा हूं।

+0

मेरे पास भी 1.6.1 numpy है। –

+0

मुझे लगता है कि मेरा सिस्टम अपडेट करना सबसे अच्छा विकल्प होगा क्योंकि प्रारूप में अन्य सभी समस्याएं 'BetterPythonConsole' से संबंधित प्रतीत होती हैं। –

+0

हां, शायद दूसरा विकल्प एक कस्टम 'प्रारूप' फ़ंक्शन लिखना होगा जो numpy arrays के साथ उपयोग किया जाए। जो लिखने में बहुत मुश्किल नहीं हो सकता है, लेकिन यदि आप इसे संभावित भविष्य के उपयोग के लिए थोड़ा सामान्य बनाना चाहते हैं तो यह कुछ ऐसा नहीं है जिसे आप 2 मिनट में लिखते हैं। उम्मीद है कि अपग्रेड आपको इसके अलावा अन्य लाभ भी देगा। – Bakuriu

संबंधित मुद्दे