ポイント: NumPyは配列を作成および操作するための強力なパッケージであり、科学計算および機械学習に不可欠です。Pythonの数値機能を強化し、さまざまなデータ型をサポートします。
- 効率的な配列作成および操作機能。
- 配列を埋めるためのreshape、slicing、arangeなどの重要な機能を含む。
私たちがPandasを学ぶ場合、PandasはNumPyを含むため、NumPyを学ばなければなりません。ここでは、NumPyを紹介し、いくつかの基本的な関数を共有します。
NumPyとは?
NumPyはパッケージであり、配列を作成します。異なる精度とスケールの数値、さらに文字列の配列を作成できるため、科学計算に特に便利です。
Python単独では、浮動小数点数、整数、虚数のみを持っています。しかし、NumPyは次のようなことを処理するため、Pythonができることを拡張します:
- 32ビットの数値
- 15桁の大きな数
- 符号付き数
- 符号なし数
- その他多数
しかし、NumPyを使用する理由はそれだけではありません。効率とスケールのために設計されており、大規模な機械学習(ML)ライブラリ、例えばTensorFlowの作業馬となっています。
さて、NumPy配列のいくつかの基本的な機能を見てみましょう。
NumPy配列の作成
np.array(<配列>)を使って配列を作成します。
np.array(1,2,3,4,5)のように書かないでください。1,2,3,4,5は配列ではありません。NumPyはカンマの後のアイテムをarray()関数へのパラメータとして解釈します。
これにより、配列が作成されます:
結果:
import numpy as np
arr = np.array([1,2,3])
arr
結果:
array([1,2,3])
配列の形状
配列には形状があります。例えば、2x2配列、2x1配列などです。
形状を次のように照会します:
arr.shape
理解を深めるために、これはベクトルと呼ぶべきです。これは3x1ではなく、次元が1つしかなく、空白は次元ではありません。
(3,)
これは3x1です。なぜなら、1x1の次元を持つ3つの配列の配列だからです。
結果:
arr = np.array([[1],[2],[3]])
arr.shape
結果:
(3, 1)
配列の形状変更
m x nの形状の配列をm x nの約数である任意の組み合わせに変形できます。この形状(6,)の配列は2x3に変形できます。なぜなら、2*3=6は6を割り切るからです。
結果:
import numpy as np
arr = np.array([1,2,3,4,5,6]).reshape(2,3)
print(arr)
結果:
[[1 2 3]
[4 5 6]]
Arange
この関数はarrangeではなくarangeであり、配列範囲として使用します。数値で配列を埋めるために使用します。(それを行う方法は多数あり、これは次の投稿で取り上げるトピックです。)
結果は:
import numpy as np
arr = np.arange(5)
arr
結果は:
array([0, 1, 2, 3, 4])
スライス
配列のスライスは難しいトピックですが、練習することで簡単になります。ここにいくつかの簡単な例があります。
この配列を取ります。
arr = np.array([1,2,3,4,5,6]).reshape(2,3)
arr
これは次のようになります:
array([[1, 2, 3],
[4, 5, 6]])
(理解を容易にするために、これには2行3列があると言うこともできますが、技術的には正しくありません。次元が2つ以上ある場合、行と列の概念は消えます。だから、それを次元と軸と言う方が良いのです。)
このスライス操作は、最初の軸の2番目の位置から始まり、最後まで行くことを意味します:
結果は:
arr[1:]
結果は:
array([[4, 5, 6]])
これは最初から最後まで行きます:
結果は:
arr[0:]
結果は:
array([[1, 2, 3],
[4, 5, 6]])
どの列を指定するかをカンマで追加します:
結果は:
arr[:,1]
結果は:
array([2, 5])
他の軸に沿って選択します:
結果は:
arr[1,:]
結果は:
array([4, 5, 6])
単一の要素を選択します。
結果:
arr[1,0]
結果:
4
ステップ
arr = np.array([1,2,3,4,5,6])
arr[1:6:2]
array([2, 4, 6])
これでこの紹介は終了です。
関連する読み物
Pandasガイド
これらの投稿は私自身のものであり、必ずしもBMCの立場、戦略、または意見を表すものではありません。