大家好

之前原本想用 javascript 寫 linucb 演算法來實作
但是發現自己數學太爛,沒有python 的 np 完全寫不出來
但是有寫一些小函式給大家參考參考
這函式主要是用來 一階陣列 outer 外積 一階陣列
我有比對 np.outer 結果是一樣的
但是由於本人數學不好
不確定是不是百分百正確
給大家參考囉

(其實我連 outer 與 dot 分別都搞不清楚...)

 

function outer1D1DArray(t1, t2){
    var t3 = [];
    for (t1k in t1){
        for (t2k in t2){
            if (typeof t3[t1k] != 'object') {
                t3[t1k] = [];
            }
            if (typeof t3[t1k][t2k] != 'number') {
                t3[t1k][t2k] = 0;
            }
            t3[t1k][t2k] = t1[t1k] * t2[t2k];
        }
    }
    return t3;
}


var a = [1,2,3];
var b = [4,5,6,7];
outer1D1DArray(a, b);

//產生:
[4, 5, 6, 7]
[8, 10, 12, 14]
[12, 15, 18, 21]

 

在 python

 

import numpy as np
a = np.array([1,2,3])
b = np.array([4,5,6,7])
print(np.outer(a, b))

[[ 4 5 6 7]
[ 8 10 12 14]
[12 15 18 21]]