Numpyのユニバーサル関数

2021年10月7日

ユニバーサル関数って耳にしたことはあるけど一体何をする関数なのでしょうか?

ユニバーサル関数(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 配列の値を順次処理

配列の値を算術演算で順次処理します。

書き方

算術演算子.reduce( a, axis=0 )

a配列
axis (オプション)計算を行う軸方向

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 全要素を順に処理

配列の全要素に対して順番に算術演算を行います。

書き方

算術演算子.accumulate( array, axis=0 )

array配列
axis(オプション)計算を行う軸方向

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.])

NumPy

Posted by Bright_Noah