【2026年9月最新】NumPyのnp.logとは?np.arrayの対数を計算するnp.log2・np.log10・np.log1pの違いを非エンジニアにわかりやすく解説
「先月から先々月にかけて、売上は何%伸びたのか」「複数の店舗・商品の成長率を、同じものさしで比較したい」——このような「伸び率」「成長率」を扱う場面は、経営の現場で頻繁に発生します。
AIエージェントやデータ分析ツールにこの手の計算を依頼すると、裏側ではPythonという言語のNumPyというライブラリに含まれるnp.logという機能がよく使われます。「対数(log)」と聞くと数学の授業を思い出して身構えてしまう方も多いと思いますが、仕組みを理解しなくても、「いつ使うと便利で、いつ罠にハマるか」だけ知っていれば十分に業務に活かせます。
この記事では、np.logが何をしているのか、似た名前を持つnp.log2・np.log10・np.log1pとの違いを、非エンジニアの経営者・管理職の方でも理解できる言葉で解説します。後半では、弊社(株式会社GENAI)がAIエージェント「Claude Code」を使って、成長率分析をどのように運用しているかも紹介します。
この記事を最後まで読むと、次の6つが明確になります。
np.logが「何を」「どう」計算しているかの基本イメージ01 WHY IT MATTERS 経営者・管理職が「対数(log)」でつまずく理由 成長率を正しく比較したいだけなのに、数字が直感と噛み合わない
「対数」という言葉自体は高校数学で習った記憶がある方も多いはずですが、実務のデータ分析でAIやアナリストから「対数で見ると分かりやすいです」と言われても、次のような疑問が残るのではないでしょうか。
こうした疑問の背景には、多くの場合「掛け算・割り算で増減する数字(成長率など)を、足し算・引き算の感覚で比較できるように変換する」という、対数の実務的な役割が関係しています。
この変換の仕組みそのものを覚える必要はありませんが、「対数を使うとこういうメリットがある」という勘所を知っておくと、AIの分析結果やグラフの見方が大きく変わります。
複数年・複数店舗の「伸び率」を横並びで比較する場面では、対数を使った分析やグラフが登場しやすくなります。分析担当者やAIから「対数スケールで見ています」と言われたら、「急激な変化を分かりやすくするための工夫」と理解しておけば十分です。
1-1. 「伸び率」は掛け算の世界の数字
売上が「前年比130%」というのは、実際には「1.3倍」という掛け算の話です。3年連続で130%成長した場合、単純に130%×3=390%にはならず、1.3×1.3×1.3=約2.20倍(約220%成長)という掛け算の積み重ねになります。この「掛け算で増えていく数字」を扱う際に、対数が強力な武器になります。
次章から、この対数の仕組みを具体的に見ていきます。
02 THE BASICS np.logとは何か——NumPyで自然対数を求める関数 Pythonのデータ分析で標準的に使われるライブラリの機能
np.logは、NumPyというPythonのライブラリに含まれる機能(関数)で、配列(複数の数値をまとめたデータ)の各値について、自然対数(底がeという特別な定数の対数)を計算するために使われます。
📚 用語解説
NumPy(ナンパイ):Pythonで数値計算・データ分析を行う際に、ほぼ標準的に使われるライブラリ(拡張機能)。大量の数値データを高速に処理できる仕組みが備わっており、売上データや広告データの集計・分析でも土台として使われることが多い。
📚 用語解説
自然対数(しぜんたいすう):数学定数e(約2.71828…)を底(てい)とする対数のこと。「eを何乗すればその数になるか」を表す。成長率や複利計算など、連続的に増減する現象を扱う分析で標準的に使われる対数の種類。
最もシンプルな例は次のようになります。
import numpy as np
sales_ratio = np.array([1.0, 1.3, 1.69, 2.197]) # 前年比の推移(1.3倍ずつ成長)
print(np.log(sales_ratio))
# [0. 0.26236426 0.52472852 0.78709278]
この例では、「1.3倍」の成長が3回続いた場合の売上比率を対数に変換しています。ポイントは、元の数字は1.3倍ずつ掛け算で増えているのに、対数変換した後の数字は0.262ずつ、ほぼ均等に足し算で増えているという点です。これが対数の最大の実務的メリットで、「掛け算の増減」を「足し算の増減」として扱えるようになります。
03 FOUR FUNCTIONS np.log2・np.log10・np.log1pとの使い分け 「底(てい)が違うだけ」と「ごく小さい値専用」の違いを整理する
NumPyには、np.logの仲間としてnp.log2・np.log10・np.log1pという関数が用意されています。名前が似ているため混同しやすいのですが、整理すると次のようになります。
📚 用語解説
底(てい):対数において「何を基準に何乗するか」を表す数。np.logは底がe(自然対数)、np.log2は底が2、np.log10は底が10。底が違っても「掛け算を足し算に変換する」という基本的な性質は同じで、結果の数字のスケール(大きさ)だけが変わる。
| 関数 | 底(てい) | 主な用途 |
|---|---|---|
np.log(a) | e(自然対数) | 成長率・複利計算など、連続的な変化を扱う分析の標準 |
np.log2(a) | 2 | データ量(バイト)や「何回倍になったか」を数えたい場合 |
np.log10(a) | 10 | 桁数の把握、グラフの対数スケール表示(人が直感的に読みやすい) |
np.log1p(a) | e(ただしlog(1+a)を計算) | 0に極めて近い小さな値を扱う際の精度確保 |
import numpy as np
a = np.array([100])
print(np.log(a)) # [4.60517019] 自然対数
print(np.log2(a)) # [6.64385619] 底2
print(np.log10(a)) # [2.] 底10(100=10の2乗なのでちょうど2)
np.log10(100)がちょうど2になるのは、100が「10の2乗」だからです。桁数がそのまま結果に現れるため、売上のグラフを「対数スケール」で表示する際は、多くの場合np.log10が使われます。100万・1000万・1億という桁違いの数字が並ぶグラフでも、np.log10で変換すれば0.1刻みのなだらかな変化として表示できます。
ビジネスの現場で「対数グラフ」を作る目的のほとんどは、桁の違う数字を1つのグラフに収めて変化を見やすくすることです。この用途であれば、まずnp.log10を試すのが分かりやすい選択です。
3-1. np.log1pだけ毛色が違う理由
np.log1p(a)は、np.log(1+a)と同じ計算結果を返す関数ですが、わざわざ別に用意されているのには理由があります。aが0に極めて近い小さな値のとき、np.log(1+a)をそのまま計算するとコンピュータの内部で丸め誤差が発生しやすく、np.log1pの方が高精度な結果を返せるのです。
import numpy as np
a = np.array([1e-10]) # 0.0000000001 という極めて小さい値
print(np.log(1 + a)) # [0.] ← 丸め誤差で0になってしまう
print(np.log1p(a)) # [1.e-10] ← 正しく極小の値を維持できる
📚 用語解説
丸め誤差:コンピュータが小数を扱う際、内部的な桁数の限界によって発生するごくわずかな計算のズレ。1に極めて近い数字同士の引き算・足し算では、本来の小さな差が消えてしまうことがある。np.log1pはこの誤差を避けるために設計された専用の関数。
実務では「広告のクリック率が0.0001%変化した」のような、極めて小さい変化率を精密に扱いたい場面でnp.log1pの出番があります。日常的な売上分析では、まずnp.logかnp.log10を使えば十分なケースがほとんどです。
04 ZERO AND NEGATIVE 0以下の値を渡すとどうなるか——実務でハマりやすい落とし穴 売上0円・赤字(マイナス)のデータが混ざると計算が崩れる
ここが、この記事で最も重要なポイントです。売上が0円だった日や、赤字(マイナスの値)が混ざったデータにnp.logを使うと、期待通りの結果が返ってこないケースがあります。
import numpy as np
data = np.array([100, 50, 0, -20])
print(np.log(data))
# [4.60517019 3.91202301 -inf nan]
# RuntimeWarning: divide by zero encountered in log
# RuntimeWarning: invalid value encountered in log
np.logに0を渡すと、数学的に「0に近づくほど対数はマイナス無限大に発散する」という性質どおり、結果は-inf(マイナス無限大)になります。さらに負の値を渡すと、実数の範囲では対数が定義できないためnan(計算不能)になります。どちらの場合もPythonはエラーで処理を止めず、警告(RuntimeWarning)を出しつつ計算を続けてしまう点に注意が必要です。
| 入力値 | np.logの結果 | 実務での原因の例 |
|---|---|---|
| 正の数 | 通常どおり計算される | 通常の売上・数量データ |
| 0 | -inf(マイナス無限大) | 売上0円だった日、在庫0個の商品 |
| 負の数 | nan(計算不能) | 赤字(マイナス売上)、返金・値引きで実質マイナスになった数値 |
厄介なのは、エラーで処理が止まらず、警告メッセージが出るだけで計算自体は最後まで進んでしまう点です。警告に気づかず後続の集計(平均・合計など)を進めてしまうと、-infやnanが結果全体を汚染し、「なぜか異常な数字が出てくる」という状態に陥ります。
4-1. 「休業日」や「新規オープン店舗」のデータに要注意
特に注意したいのが、営業していない日(売上0円)や、期間の途中でオープンしたばかりの店舗(それ以前は売上データが存在せず0扱いになる)です。こうしたデータをそのまま対数変換にかけると、その箇所だけ-infになり、平均や合計の計算に悪影響を及ぼします。
05 BUSINESS USE 売上の「伸び率」を対数で正しく比較する 複数期間・複数店舗の成長率を、同じものさしで並べる方法
対数が経営分析で本領を発揮するのは、「伸び率」を複数期間・複数店舗にわたって公平に比較したいときです。
5-1. なぜ伸び率の単純平均は誤解を生むのか
例えば、ある店舗の売上が1年目に2倍(+100%)、2年目に0.5倍(-50%)になったとします。「+100%と-50%の平均だから、2年間の平均成長率は+25%」と考えてしまいがちですが、実際には2倍×0.5倍=1倍で、2年間の売上はまったく変化していません。パーセント表示の伸び率を単純に平均すると、このような誤解が生まれます。
import numpy as np
growth = np.array([2.0, 0.5]) # 1年目2倍、2年目0.5倍
print(growth.mean()) # 1.25 ← 誤解を招く単純平均(実態は変化なし)
log_growth = np.log(growth)
print(np.exp(log_growth.mean())) # 1.0 ← 対数を経由した幾何平均。実態と一致
📚 用語解説
幾何平均(きかへいきん):掛け算で増減する数字(成長率など)を正しく平均するための計算方法。対数に変換してから通常の平均(足し算の平均)を取り、最後に元のスケールに戻すことで求められる。「伸び率の平均」を扱う際は、単純平均ではなく幾何平均を使うのが数学的に正しい。
対数を経由することで、「掛け算で増減する伸び率」を「足し算で扱える数字」に変換し、正しい平均(幾何平均)を計算できるようになります。この考え方は、複数年の売上成長率、投資のリターン、広告のCPA改善率など、「率」で語られるあらゆる指標の分析に応用できます。
5-2. グラフを対数スケールにすると何が見やすくなるか
もう1つの実務的なメリットが、グラフの対数スケール表示です。
import numpy as np
import matplotlib.pyplot as plt
years = np.array([2021, 2022, 2023, 2024, 2025])
sales = np.array([1_000_000, 1_300_000, 2_000_000, 5_000_000, 12_000_000])
fig, (ax1, ax2) = plt.subplots(1, 2, figsize=(10, 4))
ax1.plot(years, sales); ax1.set_title('通常スケール')
ax2.plot(years, sales); ax2.set_yscale('log'); ax2.set_title('対数スケール')
plt.savefig('sales_growth.png')
通常のスケールでグラフを描くと、急成長した直近2年分の変化ばかりが目立ち、初期の緩やかな成長(1,000,000円→1,300,000円)はグラフ上でほぼ横ばいの線につぶれて見えてしまいます。縦軸を対数スケールにすると、「何倍に成長したか」という比率の変化が、グラフの傾きの変化として均等に表示されるため、急成長期と停滞期の見分けがつきやすくなります。
| グラフの種類 | 向いている場面 |
|---|---|
| 通常スケール | 実額(金額そのもの)の大きさを比較したいとき |
| 対数スケール | 成長率・伸び率の「勢いの変化」を比較したいとき、桁違いの数字が混在するとき |
月間1万円の売上の店舗と、月間1,000万円の売上の店舗を同じグラフに描く場合など、桁数が大きく異なるデータを比較する際は、対数スケールへの変換を検討する価値があります。
06 COMMON PITFALLS 業務データ分析でよくある落とし穴 早見表 専門知識がなくても確認できる観点
非エンジニアの担当者でも、以下の観点でデータ分析結果のセルフチェックが可能です。
| 確認したいこと | 確認方法の例 |
|---|---|
結果に-infやnanが混ざっていないか | 集計結果の一覧をざっと見て、異常な表記がないか確認する |
| 対数変換の対象データに0円・マイナスの値が含まれていないか | 休業日・新規オープン店舗・返金データの扱いを分析担当者に確認する |
| 「伸び率の平均」が単純平均か幾何平均か | AIやアナリストに「掛け算の平均(幾何平均)を使っているか」を確認する |
| グラフが通常スケールか対数スケールか | 縦軸の目盛りが均等な間隔か、桁が飛んでいる(対数)表示かを確認する |
対数スケールのグラフは急成長を滑らかに見せる効果がありますが、これは表現方法を変えただけで、実際の数字(実額)が変わったわけではありません。対数スケールで見た成長の「勢い」と、実際の金額のインパクトは分けて報告することが重要です。
6-1. 「担当者によって伸び率の計算方法が違う」問題も見逃せない
複数の担当者が別々にExcelやスプレッドシートで伸び率を計算している組織では、「単純平均で伸び率を出す人」と「幾何平均(対数経由)で正しく出す人」が混在するという問題がよく起こります。同じ元データを見ているはずなのに、担当者によって報告される「平均成長率」が微妙に異なるという事態は、この計算方法の不統一が原因であることが少なくありません。
AIエージェントに分析を一元化して任せることの隠れた利点は、こうした「人によって計算ルールがバラつく」問題そのものを構造的に防げることです。一度ルールを指示しておけば、以降は誰が依頼しても同じ前提で計算されるようになります。
07 GENAI CASE STUDY 【独自データ】GENAI社内、成長率分析をClaude Codeにどこまで任せているか 0円・マイナスの除外まで含めた分析スクリプトを、AIエージェントに依頼する運用
ここからは、弊社(株式会社GENAI)の実運用データを紹介します。弊社ではClaude Max 20xプラン(月額$200・約30,000円)を契約し、経営・営業・広告・開発・経理・秘書業務まで全社的にAIエージェント「Claude Code」を活用しています。
| 項目 | 内容 |
|---|---|
| 契約プラン | Claude Max 20x(月$200 / 約30,000円) |
| 利用開始 | 2025年後半〜 |
| 成長率分析関連の用途 | 広告CPAの改善率、月次売上の伸び率、複数施策の成長率比較 |
| 担当体制 | 専任のデータアナリストを新規に雇わず、既存メンバー+Claude Codeで対応 |
弊社では、広告運用のレポート作成や売上分析の際、Claude Codeに「先月と今月の伸び率を、正しい平均で比較して」といった日本語での依頼をするだけで、内部的にnp.logを含む幾何平均の計算スクリプトを組み立ててもらっています。「0円や赤字のデータが混ざっていないか」まで含めて自動的にチェックしてもらうのが、弊社の標準的な運用です。
「伸び率を
正しく比較
して」と依頼
Claude Codeが
0円・マイナスの
有無を先に確認
対数(幾何平均)
で正しく
計算
人間が
結果の妥当性
を確認
この運用の利点は、「0円やマイナスが混ざるとnp.logが正しく機能しない」という、経験のあるデータ分析担当者でも意識しないと見落とす落とし穴を、AIが標準的な対策(対象データの事前チェック・幾何平均の使用)を踏まえた上で回避してくれる点にあります。人間が集計の目的を明確に伝えるだけで、実装の細部と品質管理はAIに任せられます。
7-1. 「集計の意図を言語化する」だけで済む依頼の仕方
弊社の実務では、分析に関する依頼のほとんどが「何を、どの単位で比較したいか」を一言で伝えるだけで完結しています。「複数店舗の伸び率を正しい平均で比較したい」「対数スケールでグラフにしてほしい」といった、非エンジニアでも自然に使える言葉で十分にAIへ意図が伝わります。
📚 用語解説
集計の意図の言語化:「複数期間の伸び率を正しい平均で」「桁違いのデータを見やすく」といった、分析の前提条件を明確な言葉で表現すること。技術的な関数の名前や引数を知らなくても、この前提を正確に伝えられれば、AIエージェントが適切な処理を組み立ててくれる。
08 FOR NON-ENGINEERS 【独自】非エンジニアでも対数分析の異常値をAIで見つける3ステップ コードが読めなくても、違和感から改善につなげる方法
「np.logや幾何平均の仕組みは分かったけれど、実際に自社データの分析結果が正しいか確認するのは無理そう」と感じるかもしれません。しかし、AIエージェントを間に挟むことで、非エンジニアでも改善のきっかけを作れるようになります。
8-1. ステップ1:「想定していた数字」と「出てきた数字」の違いを書き出す
「先月の伸び率は、感覚的にはもっと高かったはずなのに、分析結果ではそうなっていない」のように、自分が想定していた結果と、実際に出力された結果を具体的に書き出します。専門用語を使う必要はありません。
8-2. ステップ2:Claude Codeに「この計算に0円やマイナスの影響がないか確認して」と依頼する
Claude Codeのデスクトップ版を使えば、ターミナル(黒い画面)を開かずに、チャット形式で「この伸び率の計算に、0円や赤字データの影響がないか確認して」と依頼できます。AIがnp.logの使われ方を解析し、対象データの状況と影響を日本語で報告してくれます。
8-3. ステップ3:計算方法の妥当性を踏まえて、数字の使い方を判断する
AIが報告した計算方法や対象データの状況を踏まえて、「この数字をそのまま経営判断に使ってよいか、それとも参考値程度に留めるべきか」を人間が判断するのが、非エンジニアの担当者にとって最も価値のある関わり方です。
ズレを
書き出す
専門知識
不要
0円・赤字の
影響を確認依頼
計算方法を
日本語で報告
人間が
判断
経営判断への
反映度を決める
分析結果を受け取る際、伸び率・成長率といった数字だけでなく「単純平均か、正しい幾何平均か」を必ず併記してもらう習慣をつけると、数字への過信を防げます。
09 CONCLUSION まとめ ── 「対数」の裏に、正しい成長率比較の考え方が隠れている 技術の詳細を知らなくても、リスクは管理できる
この記事では、NumPyのnp.logが何をしているのか、np.log2・np.log10・np.log1pとの使い分け、0以下の値を渡した際の挙動、伸び率を正しく比較するための幾何平均の考え方、そして弊社GENAIがAIエージェント「Claude Code」を使って成長率分析をどう運用しているかを紹介しました。最後にポイントを振り返ります。
-inf、負の値を渡すとnanになり、警告だけで処理は止まらない「対数を使う」という作業は一見難しく見えますが、その裏側には「掛け算の増減を正しく比較したい」という、経験のあるデータ分析担当者でも意識しないと見落とす実務的なニーズが潜んでいます。技術の詳細を全て理解する必要はありませんが、「伸び率の平均には正しい計算方法がある」と知っているだけで、数字を受け取る際の感度が上がります。
小さな数字の違和感を放置せず、計算方法まで含めて早めに確認する習慣を持つことが、経営判断の正確性を守る確実な一歩です。
社内の「成長率」を正しく比較できる分析体制、AIで作りませんか?
伸び率の正しい平均計算から、対数スケールでのグラフ化・業務プロセス全体の自動化まで。
Claude Codeを使った「自社で信頼できるデータ分析ができる体制」の作り方を、実例ベースでご提案します。
ここから先の進め方は、大きく2つあります。
自社で回せるようになりたい方は、AI鬼管理でClaude Code/Codexの使い方から業務設計・社内定着まで伴走を受けながら、社内に仕組みを作る道があります。
覚えるより任せたい方は、AI社員AIKATAでこの記事のような定型業務を丸ごと預ける道があります。料金は月30万円の月額定額、追加費用は0円です。
どちらが合うかは、業務量と社内体制次第です。無料相談・無料適合診断で、貴社の場合はどちらが向くかからご相談いただけます。
NEXT STEP
この記事の内容を、あなたのビジネスで
実践してみませんか?
よくある質問
Q. np.logを実行すると「-inf」という結果が返ってくるのはなぜですか?
A. 対象の配列に0が含まれていると、np.logは数学的な性質どおり「マイナス無限大(-inf)」を返します。エラーにはならず警告(RuntimeWarning)だけが出るため、気づかずに後続の集計に使ってしまう点に注意が必要です。
Q. np.log・np.log2・np.log10はどれを使えばよいですか?
A. 成長率や複利計算など連続的な変化を扱うならnp.log(自然対数)、グラフを対数スケールで見やすく表示したいならnp.log10が使われることが多いです。np.log2はデータ量や「何回倍になったか」を数えたい場合に使われます。
Q. np.log1pはいつ使うのですか?
A. 0に極めて近い小さな値を扱う際、丸め誤差を避けて高精度に計算したい場合に使います。日常的な売上分析ではnp.logかnp.log10で十分なケースが多く、np.log1pは専門的な精度が必要な場面での選択肢です。
Q. 伸び率の平均を単純平均ではなく幾何平均で出す必要があるのはなぜですか?
A. 伸び率は「掛け算」で積み重なる数字のため、単純平均(足し算の平均)を取ると実態とズレた数字になります。対数に変換してから平均を取り、元のスケールに戻す幾何平均を使うことで、実際の掛け算の積み重ねと一致した正しい平均成長率が求まります。
Q. 自社の分析結果に0円・マイナスデータの影響があるかどうか、非エンジニアでも確認できますか?
A. コードを直接読んで判断するのは難易度が高い作業ですが、「結果に想定外の値がないか」という違和感には気づけます。原因の特定(0円データの混入等)はClaude CodeのようなAIエージェントに調査を依頼するのが現実的です。
Q. Claude Codeに成長率分析の計算方法チェックを依頼する場合、専門知識は必要ですか?
A. 不要です。「この伸び率の計算に、0円や赤字データの影響がないか確認して」といった感覚的な言葉で伝えるだけで、Claude Codeがnp.logの使われ方を解析し、対象データの状況と影響を日本語で報告します。最終確認・承認だけ人間が行う運用で十分に回せます。
Claude Codeで業務自動化を90日で叩き込む
経営者向けの伴走型パーソナルトレーニング
AI鬼管理/AI社員AIKATAへのお問い合わせ
この記事を読んで気になった方へ。
専門スタッフが、御社に最適な
業務自動化・業務代行プランを無料でご提案します。




