IT Learning

実践形式でITのお勉強

Python

【Python】Numpyの基本

投稿日:

Numpyのドキュメント

numpyのlearnのページから勉強することができます。

NumPy – Learn

Numpy配列(ndarray)の基本

ndarrayの作成

numpyライブラリをインポートして配列を作成します。

INPUT

# numpyライブラリインポート
import numpy as np

# numpy配列への格納
a = np.array([1, 2, 3])
a

OUTPUT

array([1, 2, 3])

格納した配列の型を確認します。numpy配列はndarrayという型になります。

INPUT

# 型の確認
type(a)

OUTPUT

numpy.ndarray

次元(ndim)の確認(一次元)

ndimメソッドを使用して次元数を確認することができます。

INPUT

# 一次元の場合
a = np.array([1, 2, 3])
# 次元の確認
a.ndim

OUTPUT

1

INPUT

# 二次元の場合
b = np.array([[1, 2], [3, 4]])
b.ndim

OUTPUT

2

要素数(size)の確認

sizeを使用することで要素数を取得することができます。

INPUT

# 一次元の場合
a = np.array([1, 2, 3])
a.size

OUTPUT

3

INPUT

# 二次元の場合
b = np.array([[1, 2], [3, 4]])
b.size

OUTPUT

4

形状(shape)の確認

shapeを使用することでndarrayの形状の確認ができます。

INPUT

# 1次元の場合
a = np.array([1, 2, 3])
a.shape

OUTPUT

(3,)

INPUT

# 2次元の場合
b = np.array([[1, 2], [3, 4]])
b.shape

OUTPUT

b = np.array([[1, 2], [3, 4]])

形状の変更(reshape)

reshapeを使用してshapeを(2, 3)から(3, 2)へ変更することができます。

INPUT

# (2, 3)のshapeの作成
a = np.array([[1, 2, 3], [4, 5, 6]])
a.reshape((3,2))

OUTPUT

array([[1, 2],
       [3, 4],
       [5, 6]])

デフォルトではreshapeの際のインデックスがC-likeになりますが、orderオプションでFortran-likeのインデックスを使用して形状変更することもできます。

INPUT

a.reshape((3,2), order = 'F')

OUTPUT

array([[1, 5],
       [4, 3],
       [2, 6]])

データ型の確認

dtype.nameを使用してデータ型を確認することができます。

INPUT

# データ型の確認
print(np.array([1, 2, 3]).dtype.name)
print(np.array([1.5, 2.5, 3.5]).dtype.name)
print(np.array(['a', 'b', 'c']).dtype.name)
print(np.array([1 + 1j, 2 + 1j, 3 + 1j]).dtype.name)
print(np.array([True, False]).dtype.name)

OUTPUT

int32
float64
str32
complex128
bool

型の指定

ndarrayの作成時にdtypeを指定することで型を指定することができます。

INPUT

np.array([1, 2, 3], dtype = 'float64') 

OUTPUT

array([1., 2., 3.])

オブジェクト型を使用した場合は次のようになります。

INPUT

# オブジェクト型を指定しない場合
a = np.array([1, 2.5, 'a'])
print(a.dtype.name)
for i in range(len(a)):
    print(type(a[i]))

# オブジェクト型を指定した場合
a = np.array([1, 2.5, 'a'], dtype = 'object')
print(a.dtype.name)
for i in range(len(a)):
    print(type(a[i]))
str1024
<class 'numpy.str_'>
<class 'numpy.str_'>
<class 'numpy.str_'>

object
<class 'int'>
<class 'float'>
<class 'str'>
# (2, 3)のshapeの

バイトサイズの確認

itemsizeを使用してバイトサイズの確認を行うことができます。

INPUT

# バイトサイズの確認 int32
int32 = np.array([1, 2]).itemsize
print('int32_byte : ', int32)

# バイトサイズの確認 float64
flt64 = np.array([1.5, 2.5]).itemsize
print('flt64_byte : ', flt64)

OUTPUT

int32_byte :  4
flt64_byte :  8

アドレスの確認

dataを使用することでデータが格納される先頭のポインタのアドレスを確認できます。

INPUT

np.array([1, 2]).data

OUTPUT

<memory at 0x000001F6766D0C40>

ndarrayの操作

要素を指定してndarrayを作成

要素が1となる配列の作成

INPUT

# 要素が0のndarrayを作成
np.zeros((2, 2))

OUTPUT

# 要素が0のndarray
np.zeros((2, 2))

要素が1となる配列の作成

INPUT

# 要素が1のndarray
np.ones((2, 2))

OUTPUT

# 要素が1のndarray
np.ones((2, 2))

ランダムな値を要素にもつ配列の作成

INPUT

# 要素にランダムな値のndarray
rg = np.random.default_rng()
rg.random((2, 2))

OUTPUT

array([[0.84665476, 0.05058694],
       [0.09643972, 0.07346462]])

等差数列のndarray

1づつ10要素のndarray

INPUT

# 0から10要素
np.arange(10)

OUTPUT

array([0, 1, 2, 3, 4, 5, 6, 7, 8, 9])

5づつ100までの数列

INPUT

# 1から100までの5づつ増える数列
np.arange(1, 100, 5)

OUTPUT

array([ 1,  6, 11, 16, 21, 26, 31, 36, 41, 46, 51, 56, 61, 66, 71, 76, 81,
       86, 91, 96])

数学的な操作

最大・最小の取得

max, minを使用して最大・最小値の取得ができます。

INPUT

# 最大と最小
a = np.array([[2, 5],[1.5, 8]])
print(a.max())
print(a.min())

OUTPUT

8.0
1.5

合計値の取得

sumを使用することで要素の合計値を取得することができます。

INPUT

# 合計値を取得
a.sum()

OUTPUT

16.5

累積値の取得

cumsumを使用することで要素内の値の累積値を計算することができます。

INPUT

a = np.array([[2, 5],[1.5, 8]])

# 累積値の計算
a.cumsum()

OUTPUT

array([ 2. ,  7. ,  8.5, 16.5])

指数関数

expを使用することができます。

INPUT

np.exp(1)

OUTPUT

np.exp(1)

ndarrayに対して使用すると各要素に対して計算が行われます。

INPUT

np.exp(np.array([0, 1]))

OUTPUT

array([1.        , 2.71828183])

対数

logで基底を指定して使用できます。

INPUT

a = np.log(2.718281828459045)
b = np.log10(10)
print(a)
print(b)

OUTPUT

1.0
1.0

平方根

sqrt関数により平方根の値を計算することができます。

INPUT

a = np.array([1, 4, 9, 10])
np.sqrt(a)

OUTPUT

array([1.        , 2.        , 3.        , 3.16227766])

Related

-Python

執筆者:


comment

メールアドレスが公開されることはありません。 が付いている欄は必須項目です