Numpy&Matplotlibノート

5118 ワード

numpy乱数

np.random.rand(10, 10)                //  ( e 10 10 ) ( 0-1 )
np.random.uniform(0, 100)             //  
np.random.randint(0, 100)             //  
np.random.normal(1.75, 0.1, (2, 3))   //  / / 
np.random.randint(0, 100, (2, 3))     //  (2, 3), 0-100.

numpy配列操作

  • 配列累積
  • >>> import numpy as np
    >>> s = np.array([[1, 2], [3, 4]])
    >>> s.cumsum()   //  
    array([ 1,  3,  6, 10], dtype=int32)
    >>> s.cumsum()[-1]
    10
    
  • 配列累乗
  • >>> s.cumprod()  //  
    array([ 1,  2,  6, 24], dtype=int32)
    >>> s.cumprod()[-1]
    24
    
  • 元素標準差
  • >>> s.std()  //  
    1.118033988749895
    
  • 要素合計
  • >>> s.sum()  //  
    10
    
  • 元素平均値
  • を求める
    >>> s.mean()  //  
    2.5
    
  • 要素最小値
  • >>> s.min()  //  
    1
    
  • 要素最大値
  • >>> s.max()  //  
    4
    
  • 最大要素のインデックス
  • >>> s.argmax()  //  
    3
    
  • 最小要素のインデックス
  • >>> s.argmin() //  
    0
    

    numpy線形代数

  • 行列乗算関数
  • >>> x = np.array([[1, 2, 3], [4, 5, 6]])
    >>> y = np.array([[6, 23], [-1, 7], [8, 9]])
    >>> x
    array([[1, 2, 3],
           [4, 5, 6]])
    >>> y
    array([[ 6, 23],
           [-1,  7],
           [ 8,  9]])
    >>> x.dot(y)   //  
    array([[ 28,  64],
           [ 67, 181]])
    
  • は、1次元配列の形で方形配列の対角線(または非対角線)要素を返すか、1次元配列を方形配列(非対角線要素0)
  • に変換する.
    >>> z = np.array([[1, 2, 3], [4, 5, 6], [7, 8, 9]])
    >>> z
    array([[1, 2, 3],
           [4, 5, 6],
           [7, 8, 9]])
    >>> np.diag(z)  //  ( ) , ( 0)
    array([1, 5, 9])
    >>> np.diag(np.array([1, 5, 9]))
    array([[1, 0, 0],
           [0, 5, 0],
           [0, 0, 9]])
    
  • 対角線要素の和
  • を計算する
    >>> np.trace(z)  //  
    15
    
  • 行列式
  • >>> np.linalg.det(z)  //  
    0.0
    
  • 行列の特徴値と特徴ベクトル
  • >>> np.linalg.eig(z)  //  
    (array([ 1.61168440e+01, -1.11684397e+00, -1.30367773e-15]), array([[-0.23197069, -0.78583024,  0.40824829], [-0.52532209, -0.08675134, -0.81649658],
           [-0.8186735 ,  0.61232756,  0.40824829]]))
    
  • 方程式の逆
  • >>> z = np.array([[1, 2, 3], [4, 5, 1], [7, 8, 10]])
    >>> np.linalg.inv(z)  //  
    array([[-1.27272727, -0.12121212,  0.39393939],
           [ 1.        ,  0.33333333, -0.33333333],
           [ 0.09090909, -0.18181818,  0.09090909]])
    
  • 方程式の擬似逆
  • >>> np.linalg.pinv(z) //  
    array([[-1.27272727, -0.12121212,  0.39393939],
           [ 1.        ,  0.33333333, -0.33333333],
           [ 0.09090909, -0.18181818,  0.09090909]])
    
  • OR分解
  • を計算する
    >>> np.linalg.qr(z)  //  OR 
    (array([[-0.12309149,  0.90453403,  0.40824829],
           [-0.49236596,  0.30151134, -0.81649658],
           [-0.86164044, -0.30151134,  0.40824829]]), array([[-8.12403840e+00, -9.60113630e+00, -9.47804481e+00],
           [ 0.00000000e+00,  9.04534034e-01,  7.10542736e-15],
           [ 0.00000000e+00,  0.00000000e+00,  4.49073120e+00]]))
    
  • 奇異値分解(SVD)
  • を計算する
    >>> np.linalg.svd(z)  //  (SVD)
    (array([[-0.22381562,  0.26366043, -0.93829086],
           [-0.34941657, -0.9204243 , -0.17529168],
           [-0.90984319,  0.28862136,  0.29813265]]), array([15.99977546,  3.55970061,  0.57941079]), array([[-0.49940602, -0.59209953, -0.63246483],
           [-0.3926418 , -0.49606132,  0.77443888],
           [ 0.77228624, -0.63509157, -0.01525298]]))
    
  • 解線形方程式群Ax=b、ここでAは1つの方程式
  • である.
    >>> A = np.array([[1, 2], [3, 4]])
    >>> b = np.array([5, 6])
    >>> np.linalg.solve(A, b)  //  Ax=b, A 
    array([-4. ,  4.5])
    
  • Ax=bの最小二乗解
  • を計算する
    >>> np.linalg.lstsq(A, b) //  Ax=b 
    (array([-4. ,  4.5]), array([], dtype=float64), 2, array([5.4649857 , 0.36596619]))
    

    出力:
  • a:配列タイプ、最小二乗解
  • residues:残差の和、b - axの各列の平方ユークリッド範数;AのランクA.shape[0]の場合、空の配列が返されます.bが1次元である場合、A(1,)形状の配列であり、そうでない場合、形状は(K,)
  • である.
  • rank:整数、Aのランク
  • s:配列タイプ、Aの奇異値
  • matplotlib.pyplotプロット関数


    関数#カンスウ#
    説明
    plt.plot(x, y, fmt, …)
    座標図を描く
    plt.boxplot(data, notch, position)
    箱線図を描く
    plt.bar(left, height, width, bottom)
    棒グラフを描く
    plt.barh(width, bottom, left, height)
    横棒を描く
    plt.polar(theta, r)
    極座標図を描く
    plt.pie(data, explode)
    円グラフを描く
    plt.psd(x, NFFT=256, pas_to, Fs)
    パワースペクトル密度マップの描画
    plt.specgram(x, NFFT=256, pas_to, F)
    スペクトルを描く
    plt.cohere(x, y, NFFT=256, Fs)
    X-Yの相関関数の描画
    plt.scatter(x, y)
    xとyの長さが同じである散点図を描く
    plt.step(x, y, where)
    ステップ図を描く
    plt.hist(x, bins, normed)
    ヒストグラムを描く
    plt.contour(X, Y, Z, N)
    等値図を描く
    plt.vlines(x, bins, normed)
    垂直図を描く
    plt.stem(x, y, linefmt, markerfmt)
    薪の図を描く
    plt.plot_date()
    日付データの描画