Numpyのユニバーサル関数

ユニバーサル関数って耳にしたことはあるけど一体何をする関数なのでしょうか?
目次
ユニバーサル関数(ufunc)とは
Numpyの配列(ndarray)を要素ごとに処理をして配列(ndarray)で結果を返す関数をユニバーサル関数(ufunc)と呼びます。
ユニバーサル関数にはどんなものがあるのか、見ていきましょう。
配列の算術演算
代表的な算術演算関数もユニバーサル関数の一部です。
算術演算 | 演算子 | Numpyの関数 | 書き方 |
足し算 | + | np.add | np.add( 配列or数字, 配列or数字 ) |
引き算 | – | np.subtract | np.subtract( 配列or数字, 配列or数字 ) |
掛け算 | * | np.multiply | np.multiply( 配列or数字, 配列or数字 ) |
割り算 | / | np.divide | np.divide( 配列or数字, 配列or数字 ) |
切り捨て除算 | // | np.floor_divide | np.floor_divide( 配列or数字, 配列or数字 ) |
べき乗 | ** | np.power | np.power( 配列or数字, 配列or数字 ) |
剰余演算 | % | np.mod | np.mod( 配列or数字, 配列or数字 ) |
reduce 配列の値を順次処理
配列の値を算術演算で順次処理します。
書き方
import numpy as np
x = np.array([1,2,3,4,5])
y = np.array([[1,2,3],[4,5,6],[7,8,9]])
print( np.add.reduce(x) )
print( np.add.reduce(y) ) # axis=0
print( np.add.reduce(y,axis=1) )
【実行結果】
15
[12 15 18]
[ 6 15 24]
accumulate 全要素を順に処理
配列の全要素に対して順番に算術演算を行います。
書き方
import numpy as np
x = np.array([1,2,3,4,5])
y = np.array([[1,2,3],[4,5,6],[7,8,9]])
print( np.add.accumulate(x) )
print( np.add.accumulate(y) ) # axis=0
print( np.add.accumulate(y,axis=1) )
【実行結果】
[ 1 3 6 10 15]
[[ 1 2 3]
[ 5 7 9]
[12 15 18]]
[[ 1 3 6]
[ 4 9 15]
[ 7 15 24]]
outer 直積(外積)による計算
配列の直積集合により算術演算を行います。通常の外積としても使えます。
書き方
算術演算子.outer( 計算対象の配列1, 計算対象の配列2 )
outer( 計算対象の配列1, 計算対象の配列2 )
import numpy as np
x = np.array([1,2,3,4,5])
y = np.array([2,3,4,5,6])
print( np.outer(x, y) )
print( np.add.outer(x, y) )
print( np.multiply.outer(x, y) )
【実行結果】
[[ 2 3 4 5 6]
[ 4 6 8 10 12]
[ 6 9 12 15 18]
[ 8 12 16 20 24]
[10 15 20 25 30]]
[[ 3 4 5 6 7]
[ 4 5 6 7 8]
[ 5 6 7 8 9]
[ 6 7 8 9 10]
[ 7 8 9 10 11]]
[[ 2 3 4 5 6]
[ 4 6 8 10 12]
[ 6 9 12 15 18]
[ 8 12 16 20 24]
[10 15 20 25 30]]
三角関数
三角関数もユニバーサル関数の一部です。
三角関数 | Numpyの関数 | 書き方 |
サイン | np.sin | np.sin( 弧度法の値 ) |
コサイン | np.cos | np.cos( 弧度法の値 ) |
タンジェント | np.tan | np.tan( 弧度法の値 ) |
アークサイン | np.arcsin | np.arcsin( -1~1の値 ) |
アークコサイン | np.arccos | np.arccos( -1~1の値 ) |
アークタンジェント | np.arctan | np.arctan( 実数 ) |
指数関数・対数関数
指数関数・対数関数もユニバーサル関数の一部です。
指数関数
指数関数 | Numpyの関数 | 書き方 |
ネイピア数のべき乗 | np.exp | np.exp( 配列または数字 ) |
2のべき乗 | np.exp2 | np.exp2( 配列または数字 ) |
指定した数のべき乗 | np.power | np.power( べき乗される配列または数字, べき乗する配列または数字 ) |
対数関数
対数関数 | Numpyの関数 | 書き方 |
自然対数 | np.log | np.log( 配列または数字 ) |
二進対数 | np.log2 | np.log2( 配列または数字 ) |
常用対数 | np.log10 | np.log10( 配列または数字 ) |
配列の絶対値
マイナスの値や複素数も絶対値に直せます。
書き方
abs( 配列または数字 )
import numpy as np
x = np.array([1, -8, 7, -6, 3-4j])
np.abs(x)
【実行結果】
array([1., 8., 7., 6., 5.])