このチュートリアルでは、Pythonのコードではnp.maxとして目にするNumPy max関数の使用方法を紹介します。 NumPy maxの構文と、NumPy maxの使い方の例です。

まだNumPyを始めたばかりなら、このチュートリアルを最初から最後まで全部読むことをお勧めします。 とはいえ、もしあなたが質問に対する答えを素早く得たいだけなら、次のリンクのうちの一つで適切なセクションにスキップすることができます:

  • The syntax of NumPy max
  • Examples of how to use NumPy max

Ok. 以上を踏まえて、早速始めてみましょう。

まずは、NumPyとNumPy max関数についてです。

A quick introduction to the NumPy max function

NumPy max関数がNumPyモジュールの関数であることは、おそらく理解されていることと思います。

でも、本当の初心者なら、NumPyとは何かをよく分からないと思うのです。 そこで、np.max関数について具体的に話す前に、NumPyについて簡単に説明します。

NumPyとは一体何でしょうか。

Numpy is a data manipulation module for Python

非常に簡単に言えば、NumPyとはプログラミング言語Python用のデータ操作パッケージです。

Python によるデータ科学に興味があるなら、NumPy は非常に重要なものです。 というのも、データサイエンスの仕事の多くは、単にデータ操作だからです。 ディープラーニングであれデータ分析であれ、データサイエンスにおける膨大な作業は、データをクリーニングし、データを準備し、使用しても問題がないことを確認するためにそれを探索するだけです。

繰り返しますが、データ操作の重要性から、NumPy は Python のデータサイエンスにとって非常に重要なのです。

Pythonには、非数値データや混合型のデータ(Pandasモジュールなど)を扱うための他のツールキットがあります。 NumPy関数はさまざまなデータ構造で操作できますが、NumPy配列と呼ばれる構造で操作するように構築されています。 NumPy配列は、数値データを含むPythonオブジェクトの特殊な種類に過ぎません。 np.array関数、np.ones関数、np.zeros関数、np.ange関数、そしてこのSharp Sightの過去のチュートリアルで扱った他の多くの関数など、NumPy配列を作成する方法はさまざまあります。

重要なのは、NumPyの配列は数値計算のために最適化されていることです。 つまり、NumPy配列の平均を計算したり、NumPy配列の中央値を計算したりといった、NumPy配列の数値計算を実行するための一連のツールがNumPyにあります。

NumPy maxはNumPy配列の値の最大値を計算する

numpy.max()関数はNumPy配列に含まれる数値の最大値を計算する。 また、行、列、または他の軸の最大値を計算することもできます。 それについては、例のセクションで説明します。

Syntactically, numPy max function in code as np.max をよく見かけるでしょう。 プログラマーがNumPyモジュールをnpというエイリアスでインポートしている場合、このように書かれているのを見ることができます。

さらに、明確にするために、np.max 関数は NumPy の amax 関数、別名 np.amax と同じものであることを知っておく必要があります。 本質的に np.max は np.amax のエイリアスです。

A high level example of how np.max works

このチュートリアルの後半で、np.max関数の使い方の具体例を紹介しますが、ここで、それが何をするのかの大まかなアイデアを提供したいのです。

例えば、5つの値を持つ1次元のNumPy配列があるとします。

A visual example of a numpy array that we will use with numpy max

我々は、最大値を計算するために NumPy max 関数を使用できます:

A visual representation of how NumPy max computes the average of the NumPy array.

この例では、np.max()関数が1次元のNumPy配列でどのように動作するかを示していますが、2次元配列や多次元配列でも同様の方法で動作します。

しかし、コード例を見る前に、np.max の構文とパラメータを簡単に見てみましょう。

The syntax of numpy max

関数のパラメータのいくつかは少しわかりにくいかもしれませんが、np.max の構文はかなりわかりやすいです。

ここでは、関数の構文構造について説明し、重要なパラメーターについても説明します。

A quick note

構文の復習を始める前に、1 つの簡単なメモを行います。

構文的には、関数の正式名称は numpy.max() です。

そうは言っても、コードではしばしばこの関数を np.max() として見かけます。

一般的に、NumPy モジュールを使用するプログラムの開始時に、プログラマーは NumPy 関数を np としてインポートする。 文字通り、プログラムの中でimport numpy as npと書かれたコードの行を見ることになります。 事実上、これはNumPyモジュールをnpという別名でインポートしていることになります。 これにより、プログラマーはコード内で NumPy を np として参照することができ、numpy.max 関数を np.max として参照することができます。

と述べたところで、構文を詳しく見ていきましょう。そして、関数の内部には、関数の正確な動作を制御できるようにするいくつかのパラメーターがあります。

NumPy max のシンタックスについての説明。

np.max のパラメータを詳しく見てみましょう。パラメータは、関数を本当に細かく制御できるものだからです。

The parameters of np.max

The numpy.max のパラメータは以下のとおりです。

  • a
  • axis
  • out
  • keepdims

これらのパラメータについて個別に説明しましょう。

a (required)

aパラメータはnp.max関数で扱うデータを指定できるようにするものです。

多くの場合、この入力配列は適切なNumPy配列になります。 とはいえ、numpy.max(そして他のほとんどのNumPy関数)は、データの任意の「配列のようなシーケンス」上で動作します。 つまり、aパラメータへの引数は、Pythonのリスト、Pythonのタプル、または他のいくつかのPython配列の1つであることができます。

この引数に何かを提供する必要があることを覚えておいてください。

axis (optional)

パラメータは、最大値を計算する軸を指定できます。

より簡単に言うと、軸パラメータは行最大値および列最大値を計算することが可能です。

その方法については、以下の例のセクションで詳しく説明しますが、axisパラメーターがどのように機能するかを簡単に説明します。

A quick review of array axes

高いレベルで、NumPy 配列が軸を持つことを理解する必要があります。 2次元配列では、軸0は行を下に指す軸であり、軸1は列を水平に指す軸である。

NumPy 配列軸の視覚的説明。

配列パラメーターは最大値を計算する軸を指定する

では、これはaxisパラメーターとどう関係するか?

numpy.max関数でaxisパラメータを使用するとき、最大値を求める軸を指定しています。

これにより、列最大値および行最大値を効果的に計算することができます。

軸0は下方向、行を指す軸であることを覚えておいてください。

配列上でコードnp.max(axis = 0)を使用するとき、我々は効果的にその方向… 軸0方向の最大値を計算するようにNumPyに指示していることになるのです。

axis = 0 で np.max を使用した例。

事実上、axis = 0 を設定すると、列最大値を計算するように指定している。

同様に、2次元配列では、軸 1 は水平に指すことを思い出してください。 したがって、axis = 1でNumPy maxを使うとき、我々は軸1の方向で、水平に最大値を計算するようにNumPyに指示している。

 axis = 1でnp.maxを使う例。

これは効果的に行の最大値を計算します。

これを行う方法の具体的なコード例は、後の例セクションで紹介します。

軸パラメーターはオプションであることに留意してください。 軸を指定しない場合、NumPy maxはNumPy配列全体で最大値を見つけます。

out (optional)

アウトパラメータは、np.maxの出力を格納できる特別な出力配列を指定できます。

このパラメータを使うことは一般的ではないので(特に初心者は)チュートリアルでは説明しません。

outこれは任意のパラメータです。

keepdims (オプション)

keepdims パラメータは少しわかりにくいので、理解するのに少し努力が必要です。

最終的には、出力の寸法を入力の寸法と同じに保つというものです。

なぜこれが必要かもしれないかを理解するために、numpy.max関数が通常どのように動作するかを見てみましょう。

典型的なNumPy配列でnp.maxを使用すると、関数は次元数を減らすことができる。

例えば、1次元のNumPy配列を持っているとします。 その配列に対してNumPy maxを使用します。

1次元の配列に対してnp.maxを使用すると、出力は1つの数値になります。 スカラー値…1-d配列ではありません。

np.max が1-d配列を単一の数値に要約し、MAX値を計算する視覚的な例です。median, numpy.mean, etc) のような関数はデータを要約し、データを要約することで、これらの関数は次元数を減らした出力を生成します。

しかし、時には、出力が同じ次元数を持つようにしたい場合があります。 入力が 1 次元配列の場合、出力も 1 次元配列にしたい場合があります (出力配列に 1 つの値しかない場合でも同様)。 そのため、デフォルトでは(上述したように)、出力の寸法は入力の寸法と同じにはなりません。 デフォルトでは、出力の寸法は小さくなります (np.max がデータを要約するため)。

しかし、keepdims = True を設定すると、出力は入力と同じ寸法になります。

これは具体例がないと少し抽象的なので、この動作の例は後述の例セクションで紹介したいと思います。

そして実は、パラメータを見直したので、ここはNumPy maxの例を見始めるには良い場所です。

Examples: how to use the numpy max function

このセクションでは、NumPy max関数の使用方法についての具体例をお見せします。

配列の最大値を求める方法について、いくつかのバリエーションを紹介します。 1次元配列の最大値を求める方法、2次元配列の最大値を求める方法、そしてnumpy.maxのいくつかの重要なパラメータを扱う方法を紹介します。

最初にこのコードを実行する

始める前に、正しくセットアップするために必要ないくつかの予備作業があります。

First, you need to have NumPy installed properly on your computer.

Import numpy

Second, you need to have NumPy imported into your working environment.

You can import NumPy with the following code:

import numpy as np

我々が NumPy を np として import したことに注目するんだ。

Ok, now that’s finished, let’s look at some examples.

Compute the max of a 1-dimensional array

We’ll start simple.これは、コード内で NumPy を np というエイリアスで参照することを意味します。

ここでは、1次元のNumPy配列の最大値を計算します。

これを行うには、まず、いくつかのランダムな整数を含む1次元配列を作成します。 この配列を作成するために、numpy.random.randint()関数を使用します。 NumPyの配列がこの例の整数と同じ整数を含むように、np.random.seed()関数を使う必要があることを覚えておいてください。

np.random.seed(22)np_array_1d = np.random.randint(size = 5, low = 0, high = 99)

この構文は、np_array_1dという1次元の配列を作成します。

print()関数を使ってnp_array_1dを出力します。

print(np_array_1d)

そしてこれが出力です:


視覚的に、最大値である84を確認することが出来ます。

しかし、いくつかのコードでそれを行ってみましょう。

ここで、np.max() 関数を使用して NumPy 配列の最大値を計算します。

np.max(np_array_1d)

これは次の出力を生成します:

84

これは非常に単純な例ですが、技術を説明しています。 もちろん、配列の長さが5項目しかない場合は、配列を目視で確認し、最大値を見つけることができます。

Compute the maximum of a 2-d array

Next, let’s compute the maximum of a 2-d array.

これを行うには、当然ながら2次元の配列が必要なので、まず2次元のNumPy配列を作成します。

この2次元配列を作成するために、np.random.choice()関数を使用します。 基本的に、この関数は0から8までの整数からランダムにサンプルを抽出して、入れ替えを行わないようにします。 np.random.choice()が実行された後、reshape()メソッドを使って整数を3行3列の2次元配列に整形しています。

np.random.seed(1)np_array_2d = np.random.choice(9, 9, replace = False).reshape((3,3))

この配列を出力して見てみましょう。np_array_2d.

print(np_array_2d)
 ]

ご覧のように、これは3行3列の2次元配列です。 この配列には0から8までの整数がランダムに配置されています。

さて、配列の最大値を計算してみましょう:

np.max(np_array_2d)

これにより、次の出力が得られます:

8

繰り返しますが、これは非常に単純な例ですが、もっと大きな2次元配列でこれを使用しても同じように動作します。 このテクニックの使い方を覚えたら、もっと大きな配列で試してみてください!

次は、もっと複雑なことをやってみましょう。

…次の例では、列の最大値と行の最大値を計算します。

2次元配列の列の最大値を計算する

最初に:配列の列の最大値を計算します。

これを行うには、axisパラメータを使用する必要があります。 具体的には、numpy.max関数内でaxis = 0を設定する必要があります。

理由を簡単に説明します。

axisパラメータは、要約したい軸を指定します

NumPy配列は軸があり、軸は配列に沿った方向のようだということを覚えておいてください。 2次元配列では、軸0は下を指す軸であり、軸1は水平を指す軸です。

NumPy 配列軸の視覚的説明

我々はこれらの軸を使用して、np.maxを使用する方向を定義することができます。 これは平均を下向きに計算することと同じです。

本質的に、列の最大値を計算するためには、軸0方向の最大値を計算する必要があります。

軸=0で最大値を計算する

方法を紹介しましょう。

ここで、2-d NumPy配列を作成し直します。

np.random.seed(1)np_array_2d = np.random.choice(9, 9, replace = False).reshape((3,3))

そして、それをプリントアウトします。

print(np_array_2d)
 ]

もう一度言いますが、これは3行と3列の2次元の配列です。

ここで、axis = 0でnumpy.maxを使って列の最大値を計算してみましょう。

# CALCULATE COLUMN MAXIMAnp.max(np_array_2d, axis = 0)

すると、以下の出力配列が得られます:

array()

ここで起こったことを評価してみましょう。

axis = 0を設定することで、NumPy max関数が軸0に沿って下向きに最大値を計算するように指定しました。

 axis = 0に設定すると、numpy.maxは列の最大値を計算します。

これは、NumPy軸とそれらがNumPy関数でどう機能するかを理解しさえすればとても分かりやすいことです。

Compute the row max with axis = 1

同様に、axisパラメータをaxis = 1に設定すれば、行の最大値を計算することができます。

以下は、2-d データセットを再度作成するコードです:

np.random.seed(1)np_array_2d = np.random.choice(9, 9, replace = False).reshape((3,3))
print(np_array_2d)
 ]

そして今度は、行最大値を計算してみましょう:

np.max(np_array_2d, axis = 1)

以下の出力です:

array()

すでに以前の例を読んで理解していれば、これは意味をなすはずです。

axis = 1を設定したとき、numpy.maxに軸-1方向の最大値を計算するように伝えています。 軸1は配列に沿って水平に走る軸なので、これは効果的に2次元配列の行に沿って最大値を計算します:

When we set axis = 1, numpy.max computes the max values of the rows.

繰り返しますが、あなたが本当にNumPy配列軸を理解さえすれば、これは非常に簡単です。

np.maxでkeepdimsパラメータを使用する方法

最後に、keepdimsパラメータを見てみましょう。

その前に、なぜそれが必要かを説明します。

先に述べたように、NumPyのmax関数は、それを使用するとデータを要約します。 実際、要約統計量を計算する NumPy 関数の多く (np.mean, np.median, np.min など) は、その性質上、データを要約しています。

これは、データの次元に関連する重要な結果を持ちます。

numpy.maxのような関数でデータを要約すると、関数の出力は次元の数を減らすことになります。

たとえば、2次元配列の最大値を計算するとします。 この2次元配列に対してnumpy.maxを(axisパラメータなしで)使用すると、出力は1つの数値、スカラーになります。 スカラーは0次元です。

NumPyのmax関数は、入力と出力の間の次元を効果的に削減します。

しかし、時には、次元数の削減を望まないこともあります。

技術的に出力が入力と同じ次元を持つ必要がある状況があるかもしれません (出力が単一の数値であっても)。

あなたは、keepdims パラメータを使用してその動作を強制することができます。 先ほど説明したように、これは、デフォルトでは、出力が入力と同じ寸法である必要はないことを意味します。

しかし、keepdims = Trueを設定すると、これは出力が入力と同じ次元数を持つように強制します。

これでは混乱するかもしれませんので、確かな例を見てみましょう。

まず、2次元配列を作成しましょう。

これは先ほど作った配列ですので、もしすでにこのコードを実行していれば、再度実行する必要はないでしょう。 基本的にこのコードでは、0から8までの数字を3×3の配列でランダムに並べた2次元配列を作成します。

np.random.seed(1)np_array_2d = np.random.choice(9, 9, replace = False).reshape((3,3))

わかりやすくするために、プリントアウトして見てみましょう。

print(np_array_2d)

そしてこれがその配列です:

 ]

繰り返しますが、この配列には0から8までの整数が3×3のNumPy配列でランダムに配置されているだけです。

おそらく皆さんには明白でしょうが、配列からndim属性を抽出することで次元数を直接取得できます。

np_array_2d.ndim

そしてこれで次元数がわかります:

2

つまり、np_array_2dは2次元配列ということですね。

では、np.maxを使って配列の最大値を計算してみましょう。

np.max(np_array_2d)

最大値は8です。

そして出力は何次元なのでしょうか。 np.max() 関数の最後にある ndim 属性を参照することで確認できます。

np.max(np_array_2d).ndim

出力は何次元ですか?

0.

np.max の出力は最大値 (8) で、これはスカラーになります。 このスカラーは0次元です。

Re-run np.max with keepdims = True

さて、keepdims = Trueでコードを再実行しましょう。

np.max(np_array_2d, keepdims = True)

すると、次のような出力が得られます:

array(])

そして、次元を確認してみましょう:

np.max(np_array_2d, keepdims = True).ndim
2

ここで、np_array_2dに対してkeepdims = Trueでnp.maxを実行すると、出力は2次元となります:

最大値は同じであることに注意してください: 8です。 ただ、出力の次元が違うだけです。 keepdims = Trueを設定することで、出力の構造を変更する・・・スカラーである代わりに、出力は実際には単一の値(8)を持つ2次元のNumPy配列である。

Pythonでデータサイエンスを学びたいならNumPyを学ぶ

このSharp Sightデータサイエンスブログで他のチュートリアルを読んでいるなら、データ操作がいかに重要であるかはご存知でしょう。 データ サイエンス ワークフローの大部分は、入力データのクリーニングと操作にすぎません。 Numpyは、データのクリーニング、操作、および探索に不可欠です。

Pythonでデータサイエンスを学びたいなら、NumPyを学び、よく学びましょう。

For more Python data science tutorials, sign up for our email list

Have said, if you want to learn NumPy and data science in Python, then sign up for our email list.

Here at the Sharp Sight blog, we regularly publish data science tutorials.

For more Python data science tutorials, sign up for our email list.The more NumPy and data science in the Python in work in Python.

登録すると、以下のチュートリアルを無料で入手できます:

  • NumPy
  • Pandas
  • Base Python
  • Scikit learn
  • 機械学習
  • 深層学習
  • …などなど。

チュートリアルを公開したら、あなたの受信箱に直接送ります。

Pythonでデータサイエンスを学びたいですか?

Sign up for FREE data science tutorials

データサイエンスを早くマスターしたいなら、メールリストにサインアップしましょう。

サインアップすると、R と Python でどうやってデータサイエンスを行うかという無料のチュートリアルを毎週受け取ることができます。

購読を確認するには、メールの受信箱をチェックしてください …

コメントを残す

メールアドレスが公開されることはありません。