Pythonの各種乗:dot(),*,multiply()

4097 ワード

Pythonの各種乗:dot(),*,multiply()
  • dot()dot()配列タイプまたはlistタイプにdot()が作用すると、2つの1次元配列が内積する.その他はマトリクス乗算(すなわちベクトル積、フォーク乗算)
  • In [2]:a = np.array([1,1,1])
    In [3]:b = np.array([2,2,2])
    In [4]:np.dot(a,b)
    Out[4]: 6
    In [5]:c = np.array([[3,3,3],[4,4,4]])
    In [6]:d = np.array([[5],[5],[5]])
    In [7]:np.dot(c,d)
    Out[7]: 
    array([[45],
           [60]])

    dot()がマトリクスタイプに作用する場合(マトリクス規模にかかわらず)、2つのマトリクスはマトリクス乗のマトリクス要件を満たし、結果はマトリクス乗(すなわちベクトル積、フォーク乗)である.
    In [8]:e = np.mat([[3,3,3],[4,4,4]])
    In [9]:f = np.mat([[5],[5],[5]])
    In [10]:np.dot(e,f)
    Out[10]: 
    matrix([[45],
           [60]])
    In [11]:g = np.mat([1,1,1])
    In [12]:h = np.mat([2,2,2])
    In [13]:np.dot(g,h)
    Out[13]:  
  • multiply()配列タイプ、マトリクスタイプ、listタイプに作用するにかかわらず、結果は数量積、点乗(すなわちマトリクス対応要素乗算)、ブロードキャスト現象
  • である.
    In [14]:np.multiply(a,b)
    Out[14]:array([2, 2, 2])
    In [15]:np.multiply(b,c)
    Out[15]:
    array([[6, 6, 6],
           [8, 8, 8]])
  • *配列タイプ(listタイプでは機能しない)に作用する場合は点乗
  • である.
    In [16]:a*b
    Out[16]:array([2, 2, 2])
    In [17]:[1,1,1]*[2,2,2]
    Out[17]:  
    In [17]:c*d
    Out[17]:  

    マトリクスタイプに作用する場合はフォーク
    In [7]:e*f
    Out[7]: 
    matrix([[45],
           [60]])

    -まとめ:データがマトリクスの場合dot()と*はフォークです.配列時にdot()次元は内積であり、2次元はフォーク乗であり、*は点乗である.Multiply()はずっと点乗でリストには使えません
    (PS:初めてブログを書くのも、Python初心者なので、足りないところは教えてください)