Python実用テクニック(一)

12423 ワード

Python実用テクニック(二)Python実用テクニック(三)Xが多次元配列タイプであることが知られている場合:
  • X[:,v]は、truncate Xのいくつかの列(v=1に対応)を表し、vはブールベクトルであり、長さはXの列数に等しい
  • である.
  • X[v,:],truncate Xのいくつかの行を表し,vはブールベクトルであり,長さはXの行数に等しい
  • である.
    pythonのバージョンのクエリー
    OS(WindowsまたはLinux)コマンドラインインタフェースの下:
    > python -V
    Python 3.4.3 :: Anaconda 2.3.0 (32-bit)

    pythonコマンド環境ですでに実行している場合は、次のようにします.
    >>> import sys
    >>> sys.version
    '3.4.3 |Anaconda 2.3.0 (32-bit)| (default, Mar 6 2015, 12:08:17) [MSC v.1600 32
     bit (Intel)]'
    >>> sys.version[:5]
    '3.4.3'

    クエリー・パッケージのバージョン
    >>> import library_name
    >>> library_name.__version__
    '*.*.*'
                #       dir(),         list of strings   
                #              __version__

    requirements.txtファイルの使用requirements.txtファイルは、一般に、サードパーティのライブラリ名および対応するバージョン情報を保存するために使用されます.
    numpy==1.9.2
    Theano==0.7.0

    インストールする必要があるすべてのライブラリをファイル形式で統一的にインストールし、手動のライブラリとライブラリのインストールを回避します..txtファイルがあるフォルダに切り替えます.
    pip install -r requirements.txt

    list comprehension list comprehension(最外層が[ ])を使用する目的は、list(すなわちlist comprehensionがlistを返す)を簡潔に作成することです.listは反復可能なオブジェクトです.
    list comprehensionに判断ロジック(filter)を追加します.
    [exp for x in seq if COND]
    注意:[exp for x in seq and COND]でも[exp if COND for x in seq]でもありません.
    >>> [i**2 for i in range(10) if i%2 == 0]
    [0, 4, 16, 36, 64]
    >>> type([i**2 for i n range(10) if i%2 == 0])
    list
    >>> for i in [i**2 for i in range(10) if i%2==0]:
            print(i)
    0
    4
    16
    36
    64
    ( )で包まれているのはジェネレータタイプ(generator)であり、反復可能なタイプ(iterables)でもある.
    >>> type((i**2 for i in range(10) if i%2==0))
    generator
    >>> for i in (i**2 for i in range(10) if i%2==0):
            print(i)
    0
    4
    16
    36
    64

    フォーマット出力はもちろんformat
    >>> print(1/6)
    0.16666666666666666                     #   
    >>> print('{0}'.format(1/6))
    0.16666666666666666                     #   
    >>> print('{0:.2f}'.format(1/6))
    0.17
    >>> print('{0:.0f}'.format(1/6))
    0                                       #            
    {:d}の形式でfloatを出力することはできません.
    >>> print('{0:d}'.format(10.0))
    ValueError: Unknown format code 'd' for object of type 'float'
    
    >>> print('{0:.0f}'.format(10.0))
    10

    apiの意味
    np.random.randn()   ~   N(0, 1),          
    np.random.rand()    ~   U(0, 1),     [0, 1]        

    ipython:日付の表示
    >>> !date
        : 2015/12/19   
         : (   )

    Enumerateとzipの組合せ
    enumerate(zip(, ))

    生成された各反復可能なオブジェクトは、2つのメタグループであり、メタグループの1番目のビットはそのシーケンス番号であり、2番目のビットはzipパッケージが返した内容である.
    for i, (param, true, est) in enumerate(zip('ABCD', [A, B, C, D], plesq[0])):
        plt.text(10, 3-i*.5, ''.format())

    サンプリング
    # data     
    n = len(data) 
    idx = np.random.randin(0, n, size=(nsamples, n))
    samples = data[idx]
                        # samples shape   (nsamples, n)

    生成文字型000000-999999
    for i in range(1000000):
        passwd = str(i)
        if len(passwd) < 6:
            passwd = (6-len(passwd))*'0'+passwd
        print(passwd)

    listA+listB(concatenateを表す)
    2つのリスト間で加算する意味は、次のとおりです.
    >>> [1, 2]+[3, 4]
    [1, 2, 3, 4]            #       ,   extend
                            #     (    )  。
                            #     ,     
    >>> [1, 2] + 3
    TypeError: can only concatenate list (not "int") to list

    エラーメッセージは次のとおりです.
    can only concatenate list (not "int") to list
    listおよびlistのみがconcatenateを行うことを許可し、listおよびintconcatenateにすることはできない.
    LeNet 5のソースプログラムでは、
    params = layer3.params + layer2.params + layer1.params + layer0.params
                            #       params  list  
                            #    params      list

    chr()とord()
    >>> chr(65)
    'A'
    >>> ord('A')
    65
    >>> chr(ord('A')+1)
    'B'

    点数の表示及び点数の約分
    >>> from fractions import Fraction
    >>> Fraction(1, 2)
    Fraction(1, 2)
    >>> Fraction(2, 4)
    Fraction(1, 2)