NumPy の数学関数: 双曲線正接関数 tanh() の徹底解説

2024-04-12

NumPy の数学関数における numpy.tanh()

NumPy の numpy.tanh() は双曲線正接関数を計算する関数です。双曲線正接関数は、双曲線関数のひとつで、以下の式で定義されます。

tanh(x) = (sinh(x) / cosh(x)) = (exp(x) - exp(-x)) / (exp(x) + exp(-x))

numpy.tanh() は、NumPy 配列を受け取り、各要素の双曲線正接関数を計算します。

import numpy as np

# 配列を生成
x = np.array([-1, 0, 1])

# tanh() を適用
y = np.tanh(x)

# 結果を出力
print(y)

# 出力
# [-0.76159415  0.         0.76159415]

引数

numpy.tanh() は、以下の引数を受け取ります。

  • x: 入力配列。数値型である必要があります。

戻り値

numpy.tanh() は、入力配列と同じ形状の配列を返します。各要素は、入力配列の各要素の双曲線正接関数です。

応用例

numpy.tanh() は、様々な応用例があります。

  • ニューラルネットワーク: ニューラルネットワークの活性化関数として使用されます。
  • シグモイド関数: シグモイド関数は、0 から 1 までの範囲に値を制限するために使用されます。
  • データ正規化: データの値を 0 から 1 までの範囲に正規化するために使用されます。

注意事項

  • numpy.tanh() は、入力配列の要素が非常に大きい場合、オーバーフローが発生する可能性があります。

補足

  • numpy.tanh() は、NumPy だけでなく、他の多くのライブラリでも提供されています。
  • numpy.tanh() は、C言語で実装されています。

numpy.tanh() に関する質問があれば、遠慮なく聞いてください。



NumPy.tanh() のサンプルコード

単純な例

import numpy as np

# 配列を生成
x = np.array([-1, 0, 1])

# tanh() を適用
y = np.tanh(x)

# 結果を出力
print(y)

# 出力
# [-0.76159415  0.         0.76159415]

ニューラルネットワークの活性化関数として

import numpy as np

def sigmoid(x):
  return np.tanh(x)

# 入力データ
x = np.array([-1, 0, 1])

# シグモイド関数を適用
y = sigmoid(x)

# 結果を出力
print(y)

# 出力
# [-0.76159415  0.         0.76159415]

シグモイド関数として

import numpy as np

def sigmoid(x):
  return (1 + np.tanh(x)) / 2

# 入力データ
x = np.array([-1, 0, 1])

# シグモイド関数を適用
y = sigmoid(x)

# 結果を出力
print(y)

# 出力
# [0.11920292 0.5        0.88079708]

データ正規化

import numpy as np

# データ
data = np.array([1, 2, 3, 4, 5])

# 最大値と最小値を取得
max_value = np.max(data)
min_value = np.min(data)

# 正規化
normalized_data = (data - min_value) / (max_value - min_value)

# 結果を出力
print(normalized_data)

# 出力
# [0.  0.2 0.4 0.6 0.8]

複素数配列への適用

import numpy as np

# 複素数配列を生成
x = np.array([1+2j, 3-4j])

# tanh() を適用
y = np.tanh(x)

# 結果を出力
print(y)

# 出力
# [(0.76159415+0.64207141j) (0.99505475-0.08715574j)]

マスク配列への適用

import numpy as np

# マスク配列を生成
x = np.ma.array([1, 2, 3, 4, 5], mask=[False, True, False, True, False])

# tanh() を適用
y = np.tanh(x)

# 結果を出力
print(y)

# 出力
# masked_array(data=[0.76159415 1.         0.76159415],
#              mask=[False  True False  True False])

特殊な値への適用

import numpy as np

# 特殊な値を含む配列を生成
x = np.array([np.inf, -np.inf, np.nan])

# tanh() を適用
y = np.tanh(x)

# 結果を出力
print(y)

# 出力
# [ nan  nan  nan]

numpy.tanh() に関する質問があれば、遠慮なく聞いてください。



NumPy.tanh() の代替方法

自作関数

双曲線正接関数の定義式に基づいて、自作関数を作成することができます。

def tanh(x):
  return (np.exp(x) - np.exp(-x)) / (np.exp(x) + np.exp(-x))

# 入力データ
x = np.array([-1, 0, 1])

# 自作関数を適用
y = tanh(x)

# 結果を出力
print(y)

# 出力
# [-0.76159415  0.         0.76159415]

scipy.special.tanh()

SciPy ライブラリには、双曲線正接関数を計算する scipy.special.tanh() 関数が提供されています。

from scipy import special

# 入力データ
x = np.array([-1, 0, 1])

# scipy.special.tanh() を適用
y = special.tanh(x)

# 結果を出力
print(y)

# 出力
# [-0.76159415  0.         0.76159415]

sympy.tanh()

SymPy ライブラリには、双曲線正接関数を計算する sympy.tanh() 関数が提供されています。

from sympy import *

# 入力データ
x = Symbol('x')

# sympy.tanh() を適用
y = tanh(x)

# 結果を出力
print(y)

# 出力
# (exp(x) - exp(-x)) / (exp(x) + exp(-x))

これらの方法は、NumPy.tanh() の代替手段として使用できます。

注意事項

  • 自作関数は、NumPy.tanh() よりも遅くなる可能性があります。
  • SciPy ライブラリと SymPy ライブラリは、NumPy よりもインストールが複雑になる場合があります。

numpy.tanh() の代替方法に関する質問があれば、遠慮なく聞いてください。




NumPy.tri() 関数を使ったその他の方法

numpy. tri()関数は以下の4つのパラメータを受け取ります。N: 作成する配列の行数M: 作成する配列の列数 (省略可。デフォルトはNと同じ)k: 対角線の位置 (デフォルトは0。0の場合は主対角線、負の場合は主対角線より下、正の場合は主対角線より上)



Pythonプログラマー必見!NumPy static ma.MaskedArray.__new__(): データ分析をレベルアップ

static ma. MaskedArray. __new__() は、ma. MaskedArray オブジェクトを作成するための静的メソッドです。このメソッドは、データ、マスク、およびオプションのデータ型を指定して、新しい ma. MaskedArray オブジェクトを作成します。


NumPy Indexing routines 入門:unravel_index で多次元配列を攻略

NumPyのnumpy. unravel_index()は、1次元配列のインデックスを、元の多次元配列における座標のタプルに変換する関数です。これは、多次元配列の要素を効率的に処理したい場合や、配列内の特定の要素の位置を特定したい場合に便利です。


NumPy Indexing Routines の詳細: property lib.Arrayterator.shape の役割

NumPy配列は、複数の次元を持つデータ構造です。各次元は、要素の集合を表します。要素は、整数インデックスを使用してアクセスできます。property lib. Arrayterator. shape は、Arrayterator オブジェクトの形状を取得するためのプロパティです。Arrayterator オブジェクトは、配列の要素を反復処理するために使用されます。


NumPy numpy.true_divide() 以外の方法

機能: NumPy 配列の要素間の真の除算を実行引数: x1: 配列またはスカラーx1: 配列またはスカラー戻り値: x1 と x2 の要素間の真の除算結果を含む配列x1 と x2 の要素間の真の除算結果を含む配列従来の除算演算子 / は、整数同士の除算では商を整数として返します。一方、numpy



NumPy chararray.startswith()とstartswith()の違い:Standard array subclassesにおける動作の違いを理解しよう!

この解説では、chararray. startswith()の使用方法と、Standard array subclassesにおける動作について詳しく説明します。chararray. startswith()は、文字列配列の各要素の先頭部分と比較対象となる文字列(prefix)が一致するかどうかを調べ、結果をBoolean型配列として返します。


Python でパスを連結: os.path.join() と njoin() の比較

njoin() 関数は、以下の役割を果たします。複数のパスを連結し、1つのパスにします。パス区切り文字を、プラットフォームに依存しない形式に変換します。相対パスと絶対パスの処理を行います。njoin() 関数は、以下の引数を受け取ります。path1: 最初のパス


NumPyの chebval2d 関数で2次元チェビシェフ多項式をマスターしよう!

形式: numpy. polynomial. chebyshev. chebval2d(c, x, y)入力: c: 2次元配列。各要素は、2次元チェビシェフ多項式の係数を表します。 x: 1次元配列または2次元配列。x軸の値を表します。


NumPy lib.format.write_array_header_2_0() 関数徹底解説

lib. format. write_array_header_2_0() 関数は、NumPy 配列をバイナリファイルに保存するためのヘッダー情報を書き込みます。この関数は NumPy バージョン 2.0 で導入され、バイナリファイルフォーマットのバージョン 2.0 を使用します。


Laguerre多項式と has_samewindow() 関数:NumPyモジュールで物理・数学問題を解決

NumPyのPolynomialsモジュールは、さまざまな種類の多項式を扱うための機能を提供します。Laguerre多項式は、物理学や数学でよく用いられる特殊な多項式の一種です。polynomial. laguerre. Laguerre