pythonを使う
- ひさしぶりにとほほさんのお世話になる(こちら)
- ベクトル演算
n = 4 a = range(1,n+1)
a = 1:n
import math math.exp(reduce(add,[math.log(x) for x in a])) map(math.exp,(map(log,a))) math.factorial(a[-1])
- ライブラリ・パッケージの関数
# library(math) # Rではlibrary(math)としなくても、math::hoge として関数を呼び出せるし、library(math)とすれば、hogeという関数をmathと書かずに使える # それに対応するのはpython では import math * として、math ライブラリの関数のすべてのimport # もしくは from math import exp, log, factorialのようにして、特定の関数のみを使用可能にすること exp(sum(log(a))) # Rはベクトル演算が基本だから、python のベクトル演算関数 map, reduceなどは使わずにできる exp(log(a)) factorial(a[length(a)])
- 結果、pythonは誤差が出ている…
- それを回避するためにmathライブラリのfsum()関数を使う
import math math.exp(math.fsum(map(log,a)))
map(lambda x: x%2, a) filter(lambda x: x%2, a)
a%%2 a[which(a%%2==1)]
- ベクトル同士の演算
a = [1,2,3] b = [4,5,6] [a[i] + b[i] for i in range(len(a))]
[5, 7, 9]
a = 1:3 b = 4:6 a+b
[x * y for x in a for y in b]
python |
[4, 5, 6, 8, 10, 12, 12, 15, 18]
|