반응형

환경 : windows 7 32bit, numpy 1.8.1, matplotlib 1.3.1



http://matplotlib.org/api/pyplot_api.html#module-matplotlib.pyplot


pylab combines pyplot with numpy into a single namespace. This is convenient for interactive work, but for programming it is recommended that the namespaces be kept separate.


--> 즉, pylab  = matplotlib.pyplot + numpy

       - interactive 환경 (shell, ipython 등) 에서만 pylab 사용하고, 

          프로그래밍시에는  각각 matplotlib.pyplot , numpy 로 구분하여 사용하라!!!



* 프로그래밍시 사용법 (namespace 구분)

import numpy as np
import matplotlib.pyplot as plt

x = np.arange(0, 5, 0.1);
y = np.sin(x)
plt.plot(x, y)
plt.show()



* interactive 환경에서 사용시 권장되는 방법 (pylab 으로 namespace 통합하면 편함.)

import pylab 

x = pylab.arange(0, 5, 0.1);
y = pylab.sin(x)
pylab.plot(x, y)
pylab.show()



* 권장되지 않는 사용법 (namespace 구분없어서, 함수명 등 충돌 가능성 높음.)

from pylab import *

x = arange(0, 5, 0.1);
y = sin(x)
plot(x, y)
show()




<< 참고 >>

http://matplotlib.org/faq/usage_faq.html#matplotlib-pylab-and-pyplot-how-are-they-related


Matplotlib is the whole package; pylab is a module in matplotlib that gets installed alongside matplotlib; and matplotlib.pyplot is a module in matplotlib.


Pylab combines the pyplot functionality (for plotting) with the numpy functionality (for mathematics and for working with arrays) in a single namespace, making that namespace (or environment) even more MATLAB-like. 


The pyplot interface is generally preferred for non-interactive plotting (i.e., scripting). The pylab interface is convenient for interactive calculations and plotting, as it minimizes typing. 





*** matplotlib : 3부분으로 구성됨.

1. pylab interface 

2. matplotlib frontend or matplotlib API 

3. backends 




***  비교사항 : 아래 2가지 표현법은 똑같다!!!         

      import matplotlib.pylab 

import pylab   

      

     --- 아래에서 보듯이 각각 사용하는 모듈은 다르지만, 실제 내용은 같다.


    ==> 즉, import pylab 에서 사용하는 모듈 소스는 C:\Python27\Lib\site-packages\pylab.py  !!!

       이 소스를 열어보면 아래와같다.

from matplotlib.pylab import *
import matplotlib.pylab
__doc__ = matplotlib.pylab.__doc__


즉, import pylab  과 import  matplotlib.pylab 은 내부적으로 똑같은 기능을 한다!




반응형
Posted by 자유프로그램
,
반응형


1. printf 함수


http://msdn.microsoft.com/ko-kr/library/wc7014hz.aspx


TCHAR.H routine

_UNICODE & _MBCS not defined

_MBCS defined

_unicode defined

_tprintf

printf

printf

wprintf




2. sprintf 함수


http://msdn.microsoft.com/ko-kr/library/ybk95axf.aspx


TCHAR.H routine

_UNICODE & _MBCS not defined

_MBCS defined

_UNICODE defined

_stprintf

sprintf

sprintf

swprintf

_stprintf_l

_sprintf_l

_sprintf_l

__swprintf_l




2. strlen 함수


http://msdn.microsoft.com/ko-kr/library/78zh94ax.aspx


TCHAR.H routine

_UNICODE & _MBCS not defined

_MBCS defined

_UNICODE defined

_tcslen

strlen

strlen

wcslen

_tcsclen

strlen

_mbslen

wcslen

_tcsclen_l

strlen_l

_mbslen_l

wcslen_l




4. strcmp 함수


http://msdn.microsoft.com/ko-kr/library/e0z9k731.aspx


TCHAR.H routine

_UNICODE & _MBCS not defined

_MBCS defined

_UNICODE defined

_tcscmp

strcmp

_mbscmp

wcscmp












반응형
Posted by 자유프로그램
,
반응형

csv writerow 사용시  file open mode 설정주의


환경 : windows 7 32bit, python 2.7.7   



**  csv 모듈에서 , writerow 사용시 , file open mode를 text mode ('w') 로만 open시에는  

newline 으로 '\r\n' 대신에 '\r\r\n'이 들어가서 문제발생의 가능성 유발한다.

(하지만, ubuntu 12.04 LTS 환경에서는 text mode로 open 해도 정상적으로 입력됨)


import csv

with open('monty_python.csv','w') as f:    # mode = 'w'
    cfw = csv.writer(f, dialect = 'excel')
    cfw.writerow(['spam','spam','eggs','spam'])
    cfw.writerow(['spam','spam','spam and eggs','spam'])
    cfw.writerow(['toast'])


with open('monty_python.csv','rb') as f:
    for line in f:
        print repr(line)








*** 해결책 

    --- file open 시에 binary mode로 open 하면됨. ('wb')


import csv

with open('monty_python.csv','wb') as f:     # mode = 'wb'
    cfw = csv.writer(f, dialect = 'excel')
    cfw.writerow(['spam','spam','eggs','spam'])
    cfw.writerow(['spam','spam','spam and eggs','spam'])
    cfw.writerow(['toast'])


with open('monty_python.csv','rb') as f:
    for line in f:
        print repr(line)










반응형
Posted by 자유프로그램
,
반응형


ipython notebook 에서  한글 csv 파일 불러오기



환경 : windows 7, python 2.7.5


사용 한글csv 파일 :  

csvtest.csv


 --- 한글 text 파일 불어 오듯이 하면, csv 모듈 불러쓸때는, 한글 잘 안됨.

     ( http://freeprog.tistory.com/9  참고)



1. python  IDLE 상 실행시 정상 작동.


import csv

with open('csvtest.csv') as csvf:
    rd = csv.reader(csvf)
    t = next(rd)
    for fieldname in t:
        print fieldname,
        
    print
    
    for idx, data in enumerate(rd):
        print idx, data[0], data[1], data[2] 





2. 하지만, ipython notebook 에서 실행시 error (이상한 문자로 나옴)

import csv

with open('csvtest.csv') as csvf:
    rd = csv.reader(csvf)
    t = next(rd)
    for fieldname in t:
        print fieldname,
        
    print
    
    for idx, data in enumerate(rd):
        print idx, data[0], data[1], data[2] 





*** 한글 text 파일 불러오기처럼, codec 모듈 사용해도 에러(UnicodeEncodeError) 발생

import codecs
import csv

with codecs.open('csvtest.csv','r', encoding = 'euc-kr') as csvf:
    rd = csv.reader(csvf)
    t = next(rd)
    for fieldname in t:
        print fieldname,
        
    print
    
    for idx, data in enumerate(rd):
        print idx, data[0], data[1], data[2] 





3. ipython notebook 에서 실행시 한글출력 정상으로 하는 방법.

  --- csv 모듈내의 reader() 대신에  unicode 버전 reader (unicode_csv_reader사용함 

       참고 : https://docs.python.org/2/library/csv.html


import codecs
import csv

# unicode_csv_reader(), utf_8_encoder()  
#     --->  https://docs.python.org/2/library/csv.html 에서 제공함.

def unicode_csv_reader(unicode_csv_data, dialect=csv.excel, **kwargs):
    # csv.py doesn't do Unicode; encode temporarily as UTF-8:
    csv_reader = csv.reader(utf_8_encoder(unicode_csv_data),
                            dialect=dialect, **kwargs)
    for row in csv_reader:
        # decode UTF-8 back to Unicode, cell by cell:
        yield [unicode(cell, 'utf-8') for cell in row]
 
def utf_8_encoder(unicode_csv_data):
    for line in unicode_csv_data:
        yield line.encode('utf-8')  
 


with codecs.open('csvtest.csv','r', encoding = 'euc-kr') as csvf:
    rd = unicode_csv_reader(csvf)
    t = next(rd)
    for fieldname in t:
        print fieldname,
        
    print
    
    for idx, data in enumerate(rd):
        print idx, data[0], data[1], data[2] 



















반응형
Posted by 자유프로그램
,
반응형

ipython notebook 에서 한글 txt 파일 불러오기


 환경 : windows 7, python 2.7.5


불러올 파일 (test.txt) 내용  

test.txt

test
한글 입력 test 하기..



1. python  IDLE 상 실행시 정상 작동.

with open('test.txt') as tf:
    k = tf.readlines()
    for x in k:
        print x





2. 그러나, ipython notebook 에서 실행시 error (이상한 문자로 나옴)





3. ipython notebook 에서 한글출력 정상으로 하는 방법.

    -- codecs 모듈 사용하여 euc-kr 로 불러 들인 경우.


import codecs
 
# f2 = codecs.open('test.txt', 'r', encoding='cp949')
f2 = codecs.open('test.txt', 'r', encoding='euc-kr')
 
k2 = f2.readlines()
    
for x in k2:
    print x













반응형
Posted by 자유프로그램
,