教育

【Python初心者向け】「NumPy」のインストールから使い方までまとめ

【python初心者向け】「numpy」のインストールから使い方までまとめ

AI(人工知能)でひんぱんに使用されているPythonの拡張モジュールNumPy(ナンパイ)について、これからAI(人工知能)の勉強と開発に取り組むならインストールから使い方について知っておきたいですよね。

NumPyとはAI(人工知能)のデータ処理に必要な数値計算*1が実行できるPythonの拡張モジュール*2

一般的にAI(人工知能)は人間のような考え方、感情をもったコンピュータというイメージを持つ方が多いようですが、実際のAI(人工知能)は課題に対してさまざまなデータを利用して予測や判断をしていくシステムを持ったコンピュータです。

そのためAI(人工知能)にとってデータ処理はとても重要なプロセスであり、その中でひんぱんに使用されているのがNumPyです。

ではなぜNumPyがAI(人工知能)で多用されているのでしょうか。

そこでNumPyがAI(人工知能)の中でどのような役割をしているのか、そしてNumPyのインストール方法と基本的な機能などの使い方についてお伝えします。

NumPy公式サイト

*1 数値計算
コンピュータを使って、代数的または解析的に解くのが難しい問題や、手計算では処理しきれない膨大な計算量を解く計算方法。
*2 拡張モジュール
ここではPythonに標準では備わっていない機能を組み込んで拡張するプログラム部品ことで、それを複数集めたものをライブラリといいます。

Pythonモジュール「NumPy」とは

pythonモジュール「NumPy」とは

NumPyがAI(人工知能)のデータ処理で頻繁に利用される要因の1つに「Pythonの拡張モジュール(ライブラリ)だから」という理由があります。

ではなぜ「Pythonの拡張モジュール」だから利用されているのでしょうか。

現在Pythonは多くのAI(人工知能)に使用されており、PythonがAI(人工知能)開発で使用されるプログラミング言語のディファクトスタンダード(事実上の標準)になっています。

そしてその理由には大きく2つあり、1つは「プログラムの作成しやすさ」です。

Pythonのソースコードは他のプログラミング言語よりもシンプルなので扱いやすく、またC言語やJavaなどのコンパイラ型*3の言語ではなくインタプリタ型*4なので、コンパイルなしでプログラムを書いてすぐに実行確認ができエラーが出てもすぐに修正ができます。
そしてこれらの特徴を持つPythonはプログラム作成がしやすいプログラミング言語なので、AI(人工知能)開発や他のシステム開発など幅広く用いられています。

しかしそんなPythonにもデメリットがありそれが実行速度の遅さです。

インタプリタ型のPythonはプログラムを作成しやすい反面、C言語などのコンパイラ型とくらべてプログラムの実行速度が遅くなる欠点があります。

AI(人工知能)のデータ処理には高速処理が求められるので、Pythonの実行速度の遅さはAI(人工知能)にとって大きなデメリットになります。

しかしそこでPythonのデメリットをカバーするのがNumPyなどの拡張モジュールなのです。

*3 コンパイラ型
すべてのプログラミングが終わってから、コンピュータがプログラムの内容を理解できるように機械語にコンパイル(翻訳)して、それからプログラムを実行させて動作確認を行うタイプのプログラミング言語。
インタプリタ型よりもプログラムの実行速度が速い。
*4 インタプリタ型
コンパイル作業が必要なく、プログラミング時に1命令ごとに動作確認が行えるタイプのプログラミング言語。

NumPyでデータ処理速度を高速化

Pythonはもともと科学技術計算が行いやすいプログラミング言語として開発されました。

そのためPythonには他の言語よりも複雑な計算を高速で実行できる複数の拡張モジュールが揃っており、その中でも数値データの扱いを得意としているNumPyは元祖です。
またNumPyは「機械学習のライブラリ(拡張モジュールの集まり)」とも呼ばれることがあります。
機械学習とはAI(人工知能)開発で中心的に使用されている技術で、その中の1つディープラーニング(深層学習)は現在のAI(人工知能)開発を牽引しています。そして機械学習で頻繁に利用されているのがNumPy。

もちろん機械学習のプロセスにもデータ処理があり、複雑な計算を高速で行えるプログラムが必要です。

そこでPythonを使うとNumPyなどの拡張モジュールが使用できるので、それが多くのAI(人工知能)開発でPythonが標準使用されている、もう1つの大きな理由になります。

ではなぜデータ処理に必要なプログラムが拡張モジュールという別の形で存在しているのでしょうか。

その理由についても大きく2つあります。

NumPyのように頻繁に利用されるプログラムは一から作るのではなく部品のように作り置きしておくと、必要なときに開発しているプログラムの中へすぐに組み込んで使用できる効率の良さがその理由の1つになります。
そしてもう1つの理由にはpythonで作成するプログラムでは機械学習で要求される高速データ処理を実現できないからです。

pythonでもデータ処理のプログラムを作成することは可能ですが、先ほど説明したように実行速度が遅いという欠点があり、例えばC言語なら約1分で終わる処理がpythonでは約2時間もかかってしまう場合もあります。

そこでpythonの実行速度の遅さを補うために存在しているのがNumPyなどの拡張モジュールです。

NumPyでは実行速度を上げるためにpythonよりも実行速度が速い、コンパイラ型のC言語とFortran言語で開発してデータの高速処理を実現しています。

つまりNumPyなどの拡張モジュールでpythonのデメリットをカバーして、pythonとモジュールのメリットを持ちより効率よくAI(人工知能)開発していく構図になっているのです。

ではいよいよNumPyのインストールについて紹介していきましょう。

pythonに拡張モジュールNumPyをインストールしよう

NumPyのインストール方法は主に2つあり、その1つがAnaconda(アナコンダ)をインストールする方法です。

Anacondaとはプログラミングに必要なエディタやpythonの拡張モジュールなど、開発のために必要なさまざまなツールを揃えたソフトウェアで、もちろんNumPyも備わっているのでAnacondaをインストールすればNumPyも使用できるようになっています。

Anacondaをインストールする場合は次のサイトを参照してください。

python Japan>環境構築ガイド>Anaconda

そしてNumPyをインストールするもう1つの方法はpipを利用したインストールです。

NumPyのインストールとインポート

pip*5を使ったNumPyのインストール方法はいたって簡単です。

あなたが使用しているパソコンのOSがMacならターミナル、Windowsならコマンドプロンプトを立ち上げコマンド*6入力をしてインストールします。

Windowsの場合なら次のコマンドを入力してください。

python -m pip install numpy

このコマンド入力でNumPyのインストールが実行されます。

そして次に行うのはNumPyが正常にインストールされたかの確認です。

その方法ではまずコマンドプロンプトでpythonを使えるようにするために「python」とコマンド入力してEnter、その後に下記のコマンドを入力してください。

import numpy

この入力後にエラーが出なければNumPyはインストールされています。

NumPyのインストールが完了したら次はpythonでNumPyが利用できるようにするため、次のコマンドを入力してインポートします。
import numpy as np

上記のコマンド入力でエラーが出なければpythonでNumPyが利用できる状態になっています。

主なNumPyのインストール方法を2つ紹介しました。

これらの方法はNumPy公式サイトのインストールガイドにも掲載されています。

コマンド入力によるインストールはそんなに難しくはありませんが、エラーが出た場合はその原因の特定と対処で煩わしい作業が必要になることもあるので、初心者はAnacondaをインストールする方がいいでしょう。

またMacでのインストールについては次のサイトをご参照ください。

Macでのpipによるインストール

*5 pip
pipはpythonでNumPyなどのモジュールをインストールするために便利なツール。
*6 コマンド
コンピュータに実行してほしい命令。

NumPyの使い⽅︓「ndarray」配列

NumPyの使い⽅︓「ndarray」配列

機械学習の中でNumPyの役割はAI(人工知能)の学習に利用されるデータの前処理です。その前処理でNumPyはデータの基本的な構成をとらえて扱いやすい形に整えるために使用されています。

NumPyによるデータの前処理ではデータ型の整えや連結、データの一部が不足している欠損値の処理をします。そしてそれらの作業を行いやすくする機能がndarray(エヌ・ディー・アレイ)配列。
配列とは数値を入れる変数と呼ばれる箱が連なったものと考えてください。

変数とは数学のxやyと同じで「x = 3」だとしたらxが箱で3が数値になり、箱が横一列に複数並んでいたら1次元配列、個々の箱に縦列ができていくと2次元配列で、またその縦横に整列した箱の上に連なった箱が積み重なって高さが生まれると3次元配列になります。

そしてndarray配列とは「N次元配列」つまり1次元配列および多次元配列のことで、次のルールに沿って配列されます。

  • 配列の各次元の要素数は同じにする。
  • 配列内の要素のデータ型はすべて同じにする。
  • 配列の長さを固定する。
pythonでは多次元配列を実現する場合「リスト機能」*7を使用し、同じ配列内には異なるデータ型の要素を混在させるなど自由度の高い方法で多次元配列を生成できますが、逆にndarray配列はこの3つの制限を設けることでデータの構造を分かりやすくします。
そしてデータの構造が分かりやすくなると、その後に行う計算でもデータが取り扱いやすく効率がよくなるので、このルールが高速データ処理を実現している要因の1つになっているのです。

では実際にndarray配列でどのようにデータの配列化をするのか、Pythonに標準で付属しているIDLE(総合開発環境)を使用して解説していきます。

*7  リスト機能
Pythonでデータを扱う際に使用される機能、ndarray配列のように多次元配列を生成できます。

ndarrayによる配列の生成方法

これからndarray配列の生成を説明していく前に、IDLEでNumPyが利用できるようにするためIDLE画面に

import numpy as np

と入力してNumPyが利用できる状態にしてください。

ではまず任意の「l,2,3,4,5」の数値を使用して1次元配列を生成してみます。

任意の数値で生成するndarray配列

最初に次のコマンドを入力します。

a = np.array([l,2,3,4,5])

続いて

print(a)

とコマンド入力してEnterキーを押すと[1 2 3 4 5]という結果が表示されます。

この結果がndarray配列で生成した1次元配列です。

IDLEでの表示は次のようになっています。

>>> a = np.array([l,2,3,4,5])
>>> print(a)
[1 2 3 4 5]

ndarray配列による多次元配列の生成

次に多次元配列の生成として2次元配列と3次元配列を説明します。

1次元配列の場合は最初のコマンドで

a = np.array([l,2,3,4,5])

としていましたが、2次元配列では

a = np.array([[l,2,3,],[4,5,6]])

と記述し、1次元配列の外を[ ]で閉じ2次元配列を表現します。

さらに次元数を上げて3次元配列では

a = np.array([[[l,2,3,],[4,5,6]],[[7,8,9],[10,11,12,]]])

となり、ご覧のように[ ]が増えると混乱しやすい記述になるので気をつけましょう。

そしてそれぞれを実行したら次のようになります。

  • 2次元配列
>>> a=np.array([[1,2,3],[4,5,6]])
>>> print(a)
[[1 2 3] [4 5 6]]
  • 3次元配列
>>> a=np.array([[[1,2,3], [4,5,6]], [[7,8,9], [10,11,12]]])
>>> print(a)
[[[ 1 2 3] [ 4 5 6]] [[7 8 9] [10 11 12]]]

今回紹介したndarray配列の生成はNumPyの中で基本となる方法です。

そしてNumPyで行える配列の生成方法にはzeros関数を使って全要素が0の配列、ones関数で全要素が1の配列を生成する方法などがあるので、それらについてはNumPy公式サイトなどを参照してください。

NumPyの使い⽅︓ブロードキャスト

NumPyの使い⽅︓ブロードキャスト

NumPyでは次元数や形状が異なるさまざまなパターンの配列を扱います。そしてNumPyでパターンの違う同士の計算を効率よくしてくれるのがブロードキャスト

ブロードキャストは次元数や形状が異なる配列同士で四則演算などをする場合に、それらの違いを自動で補い計算を効率化させる機能です。

ではその一例として次のコマンドと結果を御覧ください。

>>> a = np.array([10, 20, 30])
>>> b = np.array([1, 1 , 1])
>>> print (a + b)
[11 21 31]

上記の計算は通常のa内の各要素に1を足していく足し算です。

そして次はブロードキャストが機能している計算になります。

>>> a = np. array([10, 20, 30])
>>> print (a + 1)
[11 21 31]

2つの計算を比べると通常の場合ではbという配列を用意する必要がありますが、ブロードキャストではその必要がなく和が求められています。

この簡単な計算でも1行分のコマンド入力が削減できるので、そこからもブロードキャストによって計算が効率化されるのが分かります。

しかしブロードキャストはどんな配列同士の違いにも機能してくれるわけではありません。それはブロードキャストにルールが設けられているからです。

詳しいルールは公式サイトに掲載されており、その内容は大きく2つの法則から成っています。

各次元のサイズ(長さ)を揃える

例えば同じ次元の配列同士でサイズ(長さ)が異なる場合があります。

その場合はサイズが1である配列はもう一方も配列のサイズに合わせるため同じ値で引き伸ばします。

例えば「 [[1,2,3], [4,5,6]] + [[10], [20]] 」の場合は、[[10], [20]]を[[10,10,10], [20,20,20]]とサイズを引き伸ばして「 [[1,2,3], [4,5,6]] + [[10,10,10], [20,20,20]]として計算。

そしてコマンドで結果を出すと次のようになり、ブロードキャストによる計算が成立です。

>>> a=np. array([[1, 2,3], [4,5,6]])
>>> b=np.array([[10], [20]])
>>> print(a+b)
[[11 1213]
[24 25 26]]

しかしこのルールに沿っていなければエラーになります。

例えば「 [[1,2,3], [4,5,6]] + [[10,20], [30,40]] 」の場合は[10,20]と[30,40]がどちらもサイズが1ではなく2なのでルールに当てはまらず次のようにエラーとなり、[[10,20],[30]]のような場合も同じです。
  • エラーになった場合
>>> a=np.array([[1, 2,3], [4,5, 6]])
>>> b=np.array([[10, 20], [30, 40])
>>> print(a+b)
Traceback (most recent call last):
File "<pyshell#4>", line 1, in
print(a+b)
ValueError: operands could not be broadcast together with shapes (2,3) (2,2)

次元数を揃える

次元数が異なる配列同士の計算をする場合、次元の小さい配列の先頭にサイズが1の新しい次元を加えてサイズを揃えます。

では例として次の1次元配列と2次元配列の足し算を御覧ください。

>>> a=np.array([[1,2], [3,4]])
>>> b=np.array([10, 20])
>>> print(a+b)
[[11 22]
[13 24]]

上記では「 [[[1,2], [3,4]] + [10,20] 」の場合は、[10,20]に次元数を追加して[[10,20]]とします。

そして今度はサイズ引き伸ばして「 [[1, 2], [3,4]] + [[10,20], [10,20]] 」として計算。

しかしルールに当てはまらない「 [[1, 2], [3,4]] + [10,20,30] 」の場合は次元を追加してもサイズを揃えられないのでエラーになります。

>>> a=np.array([[1,2], [3,4]])
>>> b=np.array([10, 20, 30])
>>> print(a+b)
Traceback (most recent call last):
File "<pyshell#4>", line 1, in
print(a+b)
ValueError: operands could not be broadcast together with shapes (2,2) (3,)

今回紹介したブロードキャストを分かりやすく説明するために足し算で紹介しました。

この他四則演算などの計算でもルールに沿っていればブロードキャストが機能します。その詳しい内容については公式サイトなどを参照してください。

NumPyの使い⽅︓⾏列の計算

NumPyの使い⽅︓⾏列の計算

NumPyでは大量のデータ処理をまとめて扱える行列の計算が多く用いられています。

行列の計算を例えるならEXCELのシートに書かれたデータをまとめて計算することをイメージしていただければ分かりやすいでしょう。
一般に行列もndarrayの2次元配列も同じに見えますが、厳密に言うと違います。それは行列の場合だと行が「横」で列が「縦」の2次元データで、文字や数字を縦横に正方形や長方形に並べたものに対して、ndarrayの2次元配列は1次元配列(箱の連なり)が連なったものという考え方の違いがあるからです。

そしてNumPyで行う行列の計算はいくつかありますが、その計算の中でよく使われている行列の掛け算ついても違いが出ています。

その他の四則演算については行列もndarray配列の計算と同じ方法ですが、掛け算の場合は求める積の内容が異なります。

ではまずndarray配列での掛け算を御覧ください。

>>> a = np.array([[1,2,3],[4, 5, 6],[7,8,9]])
>>> print (a)
[[1 2 3] [4 5 6] [7 8 9]]
>>>
>>> b = np.array([[10,20,30],[40,50,60],[70,80,90]])
>>> print(b)
[[10 20 30] [40 50 60] [70 80 90]]
>>>
>>> c=a*b
>>> print(c)
[[ 10 40 90] [160 250 360] [490 640 810]]

上記したndarray配列の掛け算ではaとbのndarray配列を生成して「 c=a*b 」で結果を出しています。

そして行列の掛け算は次のような入力になります。

>>> c=np.dot(a, b)
>>> print(c)
[[300 360 420] [ 660 810 960] [1020 1260 1500]]

行列の場合は「dot」と呼ばれる関数を使って掛け算を行います。

そしてご覧のように両者の結果が異なりました。

これはndarray配列の場合だと要素ごとの積(アダマール積)を出すのに対して、行列では行(横)と列(縦)を掛けた内積(大きさ)を求めるので違った結果になっています。

つまり両者は求める積によって使い分けができるのです。

そして内積を求めたい場合にすでに生成されているndarray配列を下記のコマンドでmatrix(mat)関数を使い行列に変えて内積を求めることも可能です。

(先に使用したaとbのndarray配列を使って行列に変換)
>>> c=np.matrix (a)
>>> print(c)
[[1 2 3] [4 561 [7 8 91
>>> d=np.matrix (b)
>>> print(d)
[[10 20 30] [40 50 60] [70 8090]]
>>> print (c*d)
[[ 300 360 420] [ 660 810 960] [1020 1260 1500]]

また次のようにndarrayの1次元配列をmatrix(mat)関数を使って行列(2次元)に生成し直すこともできます。

>>> a=np.array([1,2,3])
>>> print(a) [1 2 3]
>>>
>>> b=np. matrix (a)
>>> print(b)
[[1 2 3]]

今回紹介したNumPyで行える行列の基本的な計算について紹介しました。

もっと詳しい内容については公式サイトなどを参照してください。

NumPyの便利機能をご紹介

NumPyの便利機能をご紹介

NumPyについてndarray配列やブロードキャスト、行列の計算の基本的な使い方について紹介してきました。

NumPyにはこの他にも便利な機能が多くあり、その中でもここでは知っておくと便利な基本機能について紹介していきます。

要素の基本的な操作

生成したndarray配列はあとで要素を操作することができます。その基本的な操作方法にはいくつかあるので、これから紹介していきましょう。

(説明には下記のndarray配列を使用します。)
>>> a = np.array([l,2,3,4,5])
>>> print(a)
[1 2 3 4 5]

要素の追加

要素の追加とはすでに生成された配列へ新たな要素を加えて生成し直す作業です。

では例としてaに「6,7,8,9,10」の要素を追加してみましょう。

まず

a2 = np. append (a, [6, 7, 8, 9, 10])

と入力した後、

print(a2)

を入力してEnter。

表示された結果が

[ 1 2 3 4 5 6 7 8 9 10]

となっていれば追加に成功しています。

>>> a2 = np. append (a, [6, 7, 8, 9, 10])
>>> print(a2)
[ 1 2 3 4 5 6 7 8 9 10]

要素の設定

要素の設定とはndarray配列内の要素の値を変更する設定です。

例としてa2で配列されている要素の1を999に変えるために

a2[0] = 999

とコマンド入力します。

[0]の0は要素の順番を表すインデックス*8で要素の先頭になる1を変更するので0で指定しています。

そして

print(a2[0])

と入力して結果が下記のように

999

と表示されたら設定完了です。

>>> a2[0] = 999
>>> print(a2[0])
999

では本当に設定できたのかa2を表示させて確認してみましょう。

print(a2)

と入力して

[999 2 3 4 5 6 7 8 9 10]

と結果が出れば成功しています。

>>> print(a2)
[999 2 3 4 5 6 7 8 9 10]
*8 インデックス
配列の場合は0から番号が始まるので今回の要素では最初の1が0になる。

要素の削除

ここでは要素の削除について説明するので、例としてa2の要素「999」を削除してみます。

要素の削除をする場合はdeleteを使用して次のコマンドを入力します。

a3 = np.delete(a2, 0)

上記のコマンドで0とはインデックスのことで、999を削除するので0を指定。

続けて

print(a3)

と入力して結果が

 [ 2 3 4 5 6 7 8 9 10

]となります。

>>> a3 = np.delete(a2, 0)
>>> print(a3)
[ 2 3 4 5 6 7 8 9 10]

ここで紹介した3つの操作は知っておくと大変便利なので覚えておきましょう。

ndarray配列の要素数、次元数、形状の抽出

ここまでの説明でみなさんもある程度ndarray配列を見れば「次元数」や「要素数」、「サイズ」が分かるようになったのではないでしょうか。

しかし「3次元配列の生成」のところでもお伝えしたように、次元数大きくなり要素数も増えサイズも長くなるとひと目では分かりにくくなってきます。

そんなとき便利なのが配列の情報を確認できる方法です。

ここではndarray配列の要素数、次元数、形状の情報確認について説明します。

(説明に際し下記のndarray配列bを使用します。)
>>> b=np.array([[1,2,3], [4,5,6]])
>>> print(b)
[[1 2 3] [4 5 6]]

要素数

要素数はsize属性を使用すれば各次元の要素数の合計が出ます。

bの場合は要素を数えると全部で「6」、コマンドでは下記の入力で導き出せます。
>>> print(b.size)
6

次元数

次元数はndini属性を使って確認できます。

下記のようにコマンド入力するとbが「2」次元だということが分かります。
>>> print(b.ndini)
2

形状

形状はshape属性を使用して「次元数」と「各次元の要素数」で表します。

下記のコマンドで結果を出すとbの場合は(2.3)となり、そこからbが「2次元」の「各要素数が3」ということが分かります。
>>> print(b. shape)
(2. 3)

この他にも属性を使ってndarray配列の情報を取得する方法がありますが、その他については公式サイトを参照してください。

ndarray配列の四則演算

すでにここまでの説明の中でndarray配列の四則演算のうち、足し算と掛け算を例として出していますが、ここでは改めてndarray配列の四則演算について説明します。

しかし基本的にどの計算も+、-、*、/が違うだけで形式は同じなので足し算を例に説明を進めます。

ndarray配列同士の四則演算

行列のところでも少し触れましたが、ndarray配列同士の四則演算は配列内の同じ位置に当たる要素同士で計算をします。

下記のコマンドだとaの1にはbの6を足し、続いて同じように計算をして和を出していきます。

>>> a = np.array([1,2,3,4,5])
>>> b = np.array([6,7,8,9,10])
>>> print (a+b)
[ 7 9 11 13 15]
>>> c=a+b
>>> print(c)
[7 9 11 13 15]

1つのndarray配列の四則演算

1つのndarray配列に1を足す場合は、「 a + 1 」とします。

すると下記のようにaの各要素に1がプラスされた結果が出ます。

>>> c=a+1
>>> print(c)
[2 3 4 5 6]

ここで紹介した四則演算は基本的な方法で、この他にもさまざまな形式の方法があります。

それについては下記の下記の公式サイトなどを参照してください。

Basic Operations

Basic array operations

今回ここで紹介したのは基本的な機能です。

NumPyにはその他にも多数の便利な機能があり、それらを使いこなすことで作業の効率化や優れたデータ処理を行えるプログラム開発にもつながって行きます。

しかし初心者はまず基本から確実に修得していきましょう。

 

コンピュータのイメージ

NumPyはAI(人工知能)のデータ処理には欠かせないPythonの拡張モジュールです。NumPyの役割はAI(人工知能)がデータを学習しやすくするためにデータの形を整える前処理をします。

今回そんなNumPyについてインストール方法からさまざまな機能についてお伝えしてきました。

Numpyの機能にはデータ処理に必要な計算の高速化と作業の効率化を実現できるndarray配列やブロードキャスト、行列の計算などのすぐれた機能が多く備わっています。

そしてすでにNumPyを利用して開発されたAI(人工知能)は私たちの生活で利用されており、今後は時代の流れとともにAI(人工知能)が私たちの日常で存在感を強めていき、それにともなって私たちがAI(人工知能)について学ぶ機会も増えていくでしょう。

そんなAI(人工知能)を学習していく過程で必ずたどるのが機械学習、そしてNumPyです。

お伝えしたようにNumPyはAI(人工知能)を開発するためには必ず使い方を修得しておかなければいけない拡張モジュール。

PythonにはNumPy以外にもpandas、matplotlibなどの拡張モジュールがありますが、その基礎部分はNumPyを元にして作られているので、NumPyの修得はその他モジュールの修得へもつながって行きます。

このようにNumPyはAI(人工知能)のデータ処理技術においてキーポイントになので、初心者のみなさんはNumPyを確実に修得して行きましょう。

トップへ戻る
タイトルとURLをコピーしました