【Python】「Numpy」簡単速習‼【データ解析】

こんにちはヤク学長です。
データサイエンティスト兼ファーマシストで、アルゴリズムやBI開発を行っています。

本記事の目的は、「pythonの基本操作を知る」ことを目的としています。

https://medical-science-labo.jp/python_advance10/

【本記事のもくじ】

まず、「Python」に真剣に取り組むための概要を解説します。
下記の方法で、簡単に概要を抑えることができます。

  • 1.Numpy

それでは、上から順番に見ていきます。
なお、本上記の方法を順番に抑えれば成果が出ます。

記事の内容は「転載 & 引用OK」問題ありません。

1.Numpy

NumPyとは

NumPyは、Pythonプログラミング言語用の数値計算ライブラリです。NumPyは、高速で効率的な多次元配列(ndarray)を操作するための関数、メソッド、および演算子を提供します。これにより、NumPyは、データの効率的な処理、数値計算、統計分析、線形代数、フーリエ変換、およびその他の科学技術計算を行うための優れたツールとなります。

NumPyは、Pythonの標準ライブラリに含まれていないため、NumPyを使用するには、まずNumPyライブラリをインストールする必要があります。NumPyは、Pythonの他のライブラリとも簡単に統合することができ、科学技術計算に広く使われています。

array

Pythonにおいて、arrayとは数値のリストやタプルのようなものを、効率的に操作することができるようにしたオブジェクトのことを指します。NumPyライブラリでは、これを更に進化させ、高速で効率的な多次元配列を操作するためのndarrayオブジェクトが提供されています。

具体的には、以下のような方法でndarrayを作成することができます。

import numpy as np
# 1次元のndarrayを作成
a = np.array([1, 2, 3, 4, 5])
# 2次元のndarrayを作成
b = np.array([[1, 2, 3], [4, 5, 6], [7, 8, 9]])
# 3次元のndarrayを作成
c = np.array([[[1, 2], [3, 4]], [[5, 6], [7, 8]]])

上記のように、NumPyのndarrayは、リストやタプルのようなPythonのオブジェクトから作成することができます。ndarrayは、shape(次元数や各次元の要素数)やdtype(データ型)といった属性を持ち、要素の参照や操作を行うことができます。

import numpy as np
# 1次元のndarrayを作成
a = np.array([1, 2, 3, 4, 5])
# ndarrayの要素の参照
print(a[0]) # 1
# ndarrayの要素の操作
a[1] = 10
print(a) # [ 1 10 3 4 5]

ndarrayを使うことで、数値計算やデータ分析、機械学習などの処理を高速かつ効率的に行うことができます。

shape

NumPyのndarrayオブジェクトは、shape属性を持っており、その配列の次元数や各次元の要素数をタプル形式で表します。shapeは、各次元の要素数を順番に並べたタプルとして表されます。

以下は、shape属性を使って、ndarrayの形状を取得する方法の例です。

import numpy as np
# 1次元のndarrayを作成
a = np.array([1, 2, 3, 4, 5])
print(a.shape) # (5,)
# 2次元のndarrayを作成
b = np.array([[1, 2, 3], [4, 5, 6], [7, 8, 9]])
print(b.shape) # (3, 3)
# 3次元のndarrayを作成
c = np.array([[[1, 2], [3, 4]], [[5, 6], [7, 8]]])
print(c.shape) # (2, 2, 2)

上記のように、shape属性は、ndarrayオブジェクトがどのような形状をしているかを知るために使用されます。この属性は、多次元配列の要素にアクセスするために必要なインデックスの数や、配列を変形するために必要な新しいshapeを計算するために役立ちます。

ndim

NumPyのndarrayオブジェクトは、ndim属性を持っており、その配列の次元数を表します。ndimは、整数値として表されます。

以下は、ndim属性を使って、ndarrayの次元数を取得する方法の例です。

import numpy as np
# 1次元のndarrayを作成
a = np.array([1, 2, 3, 4, 5])
print(a.ndim) # 1
# 2次元のndarrayを作成
b = np.array([[1, 2, 3], [4, 5, 6], [7, 8, 9]])
print(b.ndim) # 2
# 3次元のndarrayを作成
c = np.array([[[1, 2], [3, 4]], [[5, 6], [7, 8]]])
print(c.ndim) # 3

上記のように、ndim属性は、ndarrayオブジェクトが何次元配列であるかを知るために使用されます。この属性は、ndarrayオブジェクトが多次元配列である場合に、各次元の要素数に基づいた操作や計算を実行するために必要となります。

dtype

NumPyのndarrayオブジェクトは、dtype属性を持っており、その配列の要素のデータ型を表します。dtypeは、データ型オブジェクトとして表されます。

以下は、dtype属性を使って、ndarrayの要素のデータ型を取得する方法の例です。

import numpy as np
# 整数値を要素に持つndarrayを作成
a = np.array([1, 2, 3, 4, 5])
print(a.dtype) # int64
# 浮動小数点数を要素に持つndarrayを作成
b = np.array([1.0, 2.5, 3.2])
print(b.dtype) # float64
# 複素数を要素に持つndarrayを作成
c = np.array([1 + 2j, 3 + 4j])
print(c.dtype) # complex128

上記のように、dtype属性は、ndarrayオブジェクトがどのようなデータ型の要素を持っているかを知るために使用されます。この属性は、ndarrayオブジェクトの要素のデータ型を指定するために使用することもできます。たとえば、dtype=’int32’のように指定することで、int32型の要素を持つndarrayオブジェクトを作成することができます。

numpy関数で配列を作る

NumPyでは、様々な種類の配列を作成するための関数が提供されています。以下に、代表的な関数をいくつか紹介します。

  • np.array() : リスト、タプル、配列などからndarrayを作成します。
  • np.zeros() : 全ての要素が0のndarrayを作成します。
  • np.ones() : 全ての要素が1のndarrayを作成します。
  • np.empty() : 初期化されていないndarrayを作成します。
  • np.arange() : 指定した範囲の整数を要素に持つndarrayを作成します。
  • np.linspace() : 指定した範囲を等間隔に分割した数列を要素に持つndarrayを作成します。

以下は、これらの関数を使ったndarrayの作成の例です。

import numpy as np
# np.array()を使ったndarrayの作成
a = np.array([1, 2, 3, 4])
print(a) # [1 2 3 4]
# np.zeros()を使ったndarrayの作成
b = np.zeros(3)
print(b) # [0. 0. 0.]
# np.ones()を使ったndarrayの作成
c = np.ones((2, 4))
print(c)
# [[1. 1. 1. 1.]
# [1. 1. 1. 1.]]
# np.empty()を使ったndarrayの作成
d = np.empty((3, 2))
print(d)
# [[4.67296746e-307 1.69121096e-306]
# [8.34441742e-308 8.45559303e-307]
# [9.34609790e-307 7.56599128e-307]]
# np.arange()を使ったndarrayの作成
e = np.arange(5)
print(e) # [0 1 2 3 4]
# np.linspace()を使ったndarrayの作成
f = np.linspace(0, 1, 5)
print(f) # [0. 0.25 0.5 0.75 1. ]

上記のように、NumPyの関数を使うことで、様々な種類のndarrayを作成することができます。

arange

numpy.arange()関数は、指定された範囲の等差数列を作成するための関数です。一般的には、以下のように使われます。

import numpy as np

# 0から4までの整数の等差数列を作成

a = np.arange(5)
print(a) # [0 1 2 3 4]
# 2から8までの整数の等差数列を作成
b = np.arange(2, 9)
print(b) # [2 3 4 5 6 7 8]
# 0から10までの偶数の等差数列を作成
c = np.arange(0, 11, 2)
print(c) # [ 0 2 4 6 8 10]

上記のように、np.arange()関数では、最初の引数で開始点、第二引数で終了点、第三引数でステップ(間隔)を指定することができます。終了点は指定した値を含まないことに注意してください。また、ステップを省略するとデフォルト値の1が使用されます。

zeros

numpy.zeros()関数は、指定された形状のndarrayを作成し、全ての要素を0で初期化するための関数です。一般的には、以下のように使われます。

import numpy as np
# shapeが(2, 3)のndarrayを作成し、全ての要素を0で初期化する
a = np.zeros((2, 3))
print(a)
# [[0. 0. 0.]
# [0. 0. 0.]]
# shapeが(3, 3)のndarrayを作成し、全ての要素を0で初期化する
b = np.zeros((3, 3))
print(b)
# [[0. 0. 0.]
# [0. 0. 0.]
# [0. 0. 0.]]

上記のように、np.zeros()関数では、引数として形状を指定することができます。形状は、タプル型で指定し、各要素の値は、それぞれの軸の長さを表します。引数には、1つの数値を指定することもできますが、その場合は、1次元のndarrayが作成されます。

ones関数

numpy.ones()関数は、指定された形状のndarrayを作成し、全ての要素を1で初期化するための関数です。一般的には、以下のように使われます。

import numpy as np
# shapeが(2, 3)のndarrayを作成し、全ての要素を1で初期化する
a = np.ones((2, 3))
print(a)
# [[1. 1. 1.]
# [1. 1. 1.]]
# shapeが(3, 3)のndarrayを作成し、全ての要素を1で初期化する
b = np.ones((3, 3))
print(b)
# [[1. 1. 1.]
# [1. 1. 1.]
# [1. 1. 1.]]

上記のように、np.ones()関数でも、引数として形状を指定することができます。形状は、タプル型で指定し、各要素の値は、それぞれの軸の長さを表します。また、np.zeros()関数と同様に、引数には、1つの数値を指定することもできますが、その場合は、1次元のndarrayが作成されます。

linspace

numpy.linspace()関数は、指定された範囲の等間隔の数列を作成するための関数です。一般的には、以下のように使われます。

import numpy as np
# 0から1までを5分割した等間隔の数列を作成
a = np.linspace(0, 1, 5)
print(a) # [0. 0.25 0.5 0.75 1. ]
# -1から1までを11分割した等間隔の数列を作成
b = np.linspace(-1, 1, 11)
print(b) # [-1. -0.8 -0.6 -0.4 -0.2 0. 0.2 0.4 0.6 0.8 1. ]

上記のように、np.linspace()関数では、最初の引数で開始点、第二引数で終了点、第三引数で分割数を指定することができます。分割数は、等間隔で生成される数列の要素数を表します。また、終了点を含む数列が生成されることに注意してください。

配列を編集する

NumPyの配列を編集するためには、インデックスやスライスを使って要素を取得したり、代入して値を変更することができます。以下にいくつかの例を示します。

import numpy as np
# 1次元のndarrayを作成
a = np.array([1, 2, 3, 4, 5])
# 1つ目の要素を取得
print(a[0]) # 1
# 3つ目から5つ目までの要素を取得
print(a[2:5]) # [3 4 5]
# 2つ目の要素を10に変更
a[1] = 10
print(a) # [ 1 10 3 4 5]
# 2次元のndarrayを作成
b = np.array([[1, 2, 3], [4, 5, 6], [7, 8, 9]])
# 2つ目の行を取得
print(b[1]) # [4 5 6]
# 3つ目の列を取得
print(b[:, 2]) # [3 6 9]
# 1つ目の行の2つ目の要素を10に変更
b[0, 1] = 10
print(b)
# [[ 1 10 3]
# [ 4 5 6]
# [ 7 8 9]]

上記のように、配列の要素にアクセスするには、インデックスやスライスを使用します。また、要素を変更するには、代入演算子 = を使用します。配列の形状を変更する方法には、reshape()関数やresize()関数などがあります。これらの関数は、配列の形状を変更するだけでなく、要素数が変わる場合は要素を追加したり削除したりすることもできます。

reshape

reshape()関数は、NumPyの配列の形状を変更するために使用されます。配列の形状を変更するためには、reshape()関数に新しい形状を指定する必要があります。以下に例を示します。

import numpy as np
# 1次元配列を作成
a = np.array([1, 2, 3, 4, 5, 6, 7, 8, 9, 10])
# 形状を変更して2次元配列にする
b = a.reshape(2, 5)
print(b)
# [[ 1 2 3 4 5]
# [ 6 7 8 9 10]]
# 形状を変更して3次元配列にする
c = a.reshape(2, 5, 1)
print(c)
# [[[ 1]
# [ 2]
# [ 3]
# [ 4]
# [ 5]]
#
# [[ 6]
# [ 7]
# [ 8]
# [ 9]
# [10]]]

上記の例では、最初に1次元配列を作成し、reshape()関数を使用して新しい形状を指定して2次元配列や3次元配列に変換しています。reshape()関数に与える引数は、新しい形状を表すタプルで与えます。reshape()関数は、元の配列の要素数と新しい形状の要素数が一致しない場合にはエラーを発生させます。

T属性

NumPyの配列には、転置(transpose)を行うためのT属性があります。転置とは、行と列を入れ替える操作であり、2次元配列の場合は、行列の転置ということになります。

以下は、T属性を使用して2次元配列の転置を行う例です。

import numpy as np
# 2次元配列を作成
a = np.array([[1, 2, 3], [4, 5, 6]])
# 転置する
b = a.T
# 結果を表示する
print(a)
# [[1 2 3]
# [4 5 6]]
print(b)
# [[1 4]
# [2 5]
# [3 6]]

上記の例では、2次元配列を作成し、T属性を使用して行列の転置を行っています。結果として、列が行に、行が列になった2次元配列が得られます。T属性は、2次元配列以外にも、n次元配列に対しても使用することができます。

配列を結合する

NumPyの配列を結合する方法には、concatenate()関数やstack()関数、hstack()関数、vstack()関数などがあります。これらの関数を使うことで、複数の配列を結合して新しい配列を作ることができます。

以下は、concatenate()関数を使って、2つの1次元配列を結合する例です。

import numpy as np
# 2つの1次元配列を作成
a = np.array([1, 2, 3])
b = np.array([4, 5, 6])
# concatenate()関数を使って結合する
c = np.concatenate([a, b])
# 結果を表示する
print(c)
# [1 2 3 4 5 6]

上記の例では、concatenate()関数に結合したい配列をリスト形式で渡し、結合した新しい配列を作成しています。

append関数

append()関数は、NumPy配列に要素を追加するために使用される関数の1つです。この関数は、既存のNumPy配列に新しい要素を追加して、新しいNumPy配列を作成することができます。

append()関数は、以下のように構文を持ちます。

numpy.append(arr, values, axis=None)
  • arr:追加する配列
  • values:追加する要素
  • axis:配列を連結する軸(省略可能)

以下は、append()関数を使ってNumPy配列に要素を追加する例です。

import numpy as np
# 1次元配列を作成
arr = np.array([1, 2, 3])
# 要素を追加
arr = np.append(arr, 4)
# 結果を表示する
print(arr)
# [1 2 3 4]

append()関数は、axisパラメータを使用して多次元配列にも適用できます。次の例では、2つのNumPy配列を行方向に連結します。

import numpy as np
# 2つの2次元配列を作成
a = np.array([[1, 2], [3, 4]])
b = np.array([[5, 6]])
# 行方向に配列を連結
c = np.append(a, b, axis=0)
# 結果を表示する
print(c)
# [[1 2]
# [3 4]
# [5 6]]

append()関数は、元の配列を変更せずに新しい配列を作成します。したがって、元の配列は変更されず、新しい配列を使用する必要があります。また、append()関数は、単一の要素を追加する場合には、numpy.append()を使用するよりもPythonのリストに対してlist.append()を使用する方が効率的です。

vstack

vstack()関数は、NumPy配列の垂直方向(行方向)に別の配列を結合するために使用されます。つまり、2つ以上のNumPy配列を垂直方向にスタックして、新しいNumPy配列を作成することができます。

vstack()関数は、以下のように構文を持ちます。

numpy.vstack(tup)
  • tup:NumPy配列のタプル(2つ以上)

以下は、vstack()関数を使ってNumPy配列を結合する例です。

import numpy as np
# 2つの2次元配列を作成
a = np.array([[1, 2], [3, 4]])
b = np.array([[5, 6], [7, 8]])
# 行方向に配列を連結
c = np.vstack((a, b))
# 結果を表示する
print(c)
# [[1 2]
# [3 4]
# [5 6]
# [7 8]]

vstack()関数は、2つ以上の配列を結合するために使用されます。したがって、vstack()関数は、以下のように複数のNumPy配列を結合することができます。

import numpy as np
# 3つの1次元配列を作成
a = np.array([1, 2, 3])
b = np.array([4, 5, 6])
c = np.array([7, 8, 9])
# 配列を結合
d = np.vstack((a, b, c))
# 結果を表示する
print(d)
# [[1 2 3]
# [4 5 6]
# [7 8 9]]

vstack()関数は、hstack()関数と対照的に、NumPy配列を垂直方向にスタックすることができます。また、vstack()関数は、2次元以上のNumPy配列でも機能します。

hstack

hstack()関数は、NumPy配列の水平方向(列方向)に別の配列を結合するために使用されます。つまり、2つ以上のNumPy配列を水平方向にスタックして、新しいNumPy配列を作成することができます。

hstack()関数は、以下のように構文を持ちます。

numpy.hstack(tup)
  • tup:NumPy配列のタプル(2つ以上)

以下は、hstack()関数を使ってNumPy配列を結合する例です。

import numpy as np
# 2つの2次元配列を作成
a = np.array([[1, 2], [3, 4]])
b = np.array([[5, 6], [7, 8]])
# 列方向に配列を連結
c = np.hstack((a, b))
# 結果を表示する
print(c)
# [[1 2 5 6]
# [3 4 7 8]]

hstack()関数は、2つ以上の配列を結合するために使用されます。したがって、hstack()関数は、以下のように複数のNumPy配列を結合することができます。

import numpy as np
# 3つの1次元配列を作成
a = np.array([1, 2, 3])
b = np.array([4, 5, 6])
c = np.array([7, 8, 9])
# 配列を結合
d = np.hstack((a, b, c))
# 結果を表示する
print(d)
# [1 2 3 4 5 6 7 8 9]

hstack()関数は、vstack()関数と対照的に、NumPy配列を水平方向にスタックすることができます。また、hstack()関数は、2次元以上のNumPy配列でも機能します。

配列に演算を行う

NumPy配列では、各要素に対して算術演算子、数学関数、論理演算子、ビット演算子などを適用することができます。

以下は、NumPy配列に対して算術演算を行う例です。

import numpy as np
# NumPy配列を作成
a = np.array([1, 2, 3])
b = np.array([4, 5, 6])
# 要素ごとの加算
c = a + b
print(c) # [5 7 9]
# 要素ごとの減算
d = a - b
print(d) # [-3 -3 -3]
# 要素ごとの乗算
e = a * b
print(e) # [ 4 10 18]
# 要素ごとの除算
f = a / b
print(f) # [0.25 0.4 0.5 ]

上記の例では、NumPy配列abを作成し、要素ごとに加算、減算、乗算、除算を行い、新しい配列cdefを作成しています。

また、NumPy配列に対して数学関数を適用することもできます。

import numpy as np
# NumPy配列を作成
a = np.array([1, 2, 3])
# 関数を適用
b = np.sin(a)
print(b) # [0.84147098 0.90929743 0.14112001]
c = np.exp(a)
print(c) # [ 2.71828183 7.3890561 20.08553692]

上記の例では、NumPy配列aを作成し、np.sin()関数やnp.exp()関数を適用して、新しい配列bcを作成しています。

また、NumPy配列に対して論理演算子やビット演算子を適用することもできます。

import numpy as np
# NumPy配列を作成
a = np.array([True, False, True])
b = np.array([True, True, False])
# 論理和
c = np.logical_or(a, b)
print(c) # [ True True True]
# 論理積
d = np.logical_and(a, b)
print(d) # [ True False False]
# ビット和
e = np.bitwise_or(a, b)
print(e) # [ True True True]
# ビット積
f = np.bitwise_and(a, b)
print(f) # [ True False False]

上記の例では、NumPy配列abを作成し、論理和、論理積、ビット和、ビット積を行っています。

ランダムな数値を得る

NumPyには、ランダムな数値を生成するための機能があります。以下に、代表的なランダムな数値を生成する関数を紹介します。

rand関数

np.random.rand()関数は、0以上1未満の一様分布からランダムな数値を生成します。

import numpy as np
# 0以上1未満の一様分布からランダムな数値を生成
a = np.random.rand()
print(a) # 0.5031353887634193
# 指定したshapeの配列を生成
b = np.random.rand(2, 3)
print(b)
# [[0.53476364 0.39036949 0.61817409]
# [0.42969616 0.65279032 0.63505887]]

上記の例では、np.random.rand()関数を用いて、0以上1未満の一様分布からランダムな数値を生成しています。また、np.random.rand()関数に引数を与えることで、指定したshapeの配列を生成することもできます。

randint関数

np.random.randint()関数は、指定した範囲の整数からランダムな数値を生成します。

import numpy as np
# 0から5までの範囲の整数からランダムな数値を生成
a = np.random.randint(6)
print(a) # 4
# 1から7までの範囲の整数からランダムな数値を生成
b = np.random.randint(1, 8)
print(b) # 3
# 0から10までの範囲の整数からshape(2, 3)の配列を生成
c = np.random.randint(11, size=(2, 3))
print(c)
# [[9 5 3]
# [6 3 6]]

上記の例では、np.random.randint()関数を用いて、指定した範囲の整数からランダムな数値を生成しています。また、np.random.randint()関数に引数を与えることで、shapeを指定してランダムな配列を生成することもできます。

normal関数

np.random.normal()関数は、正規分布からランダムな数値を生成します。

import numpy as np

# 平均0、標準偏差1の正規分布からランダムな数値を生成

a = np.random.normal()
print(a) # -0.5382569050117032

# 平均2、標準偏差0.5の正規分布からshape(2, 3)の配列を生成

b = np.random.normal(2, 0.5, size=(2, 3))
print(b)
# [[1.94604903 1.94569815 1.47661621]
# [2.28913287 2.09173664 2.66167661]

配列の要素の合計値、平均値を得る

NumPyを使って、配列の要素の合計値や平均値を計算することができます。以下に、代表的な関数を紹介します。

sum関数

np.sum()関数は、配列の要素の合計値を計算します。

import numpy as np
# 配列の要素の合計値を計算
a = np.array([1, 2, 3])
print(np.sum(a)) # 6
# 指定した軸方向に和をとる
b = np.array([[1, 2], [3, 4]])
print(np.sum(b, axis=0)) # [4 6]
print(np.sum(b, axis=1)) # [3 7]

上記の例では、np.sum()関数を用いて、配列の要素の合計値を計算しています。また、np.sum()関数に軸(axis)を指定することで、指定した軸方向に和をとることができます。

mean関数

np.mean()関数は、配列の要素の平均値を計算します。

import numpy as np
# 配列の要素の平均値を計算
a = np.array([1, 2, 3])
print(np.mean(a)) # 2.0
# 指定した軸方向に平均をとる
b = np.array([[1, 2], [3, 4]])
print(np.mean(b, axis=0)) # [2. 3.]
print(np.mean(b, axis=1)) # [1.5 3.5]

上記の例では、np.mean()関数を用いて、配列の要素の平均値を計算しています。また、np.mean()関数に軸(axis)を指定することで、指定した軸方向に平均をとることができます。

max関数, min関数

np.max()関数は、配列の要素の最大値を計算します。np.min()関数は、配列の要素の最小値を計算します。

import numpy as np
# 配列の要素の最大値を計算
a = np.array([1, 2, 3])
print(np.max(a)) # 3
# 指定した軸方向の最大値、最小値を計算
b = np.array([[1, 2], [3, 4]])
print(np.max(b, axis=0)) # [3 4]
print(np.min(b, axis=1)) # [1 3]

上記の例では、np.max()関数とnp.min()関数を用いて、配列の要素の最大値と最小値を計算しています。また、np.max()関数とnp.min()関数に軸(axis)を指定することで、指定した軸方向の最大値と最小値を下記に示します。

import numpy as np
# 配列の要素の合計値を計算
a = np.array([1, 2, 3])
print(np.sum(a)) # 6
# 指定した軸方向に和をとる
b = np.array([[1, 2], [3, 4]])
print(np.sum(b, axis=0)) # [4 6]
print(np.sum(b, axis=1)) # [3 7]
# 配列の要素の平均値を計算
a = np.array([1, 2, 3])
print(np.mean(a)) # 2.0
# 指定した軸方向に平均をとる
b = np.array([[1, 2], [3, 4]])
print(np.mean(b, axis=0)) # [2. 3.]
print(np.mean(b, axis=1)) # [1.5 3.5]
# 配列の要素の最大値を計算
a = np.array([1, 2, 3])
print(np.max(a)) # 3
# 指定した軸方向の最大値、最小値を計算
b = np.array([[1, 2], [3, 4]])
print(np.max(b, axis=0)) # [3 4]
print(np.min(b, axis=1)) # [1 3]

上記のコードでは、np.sum()関数、np.mean()関数、np.max()関数、np.min()関数を使って、それぞれ配列の要素の合計値、平均値、最大値、最小値を計算しています。また、np.sum()関数やnp.mean()関数には、軸(axis)を指定して、指定した軸方向に計算することもできます。

行、列の合計値を得る

行列の合計値を得る方法は、行方向、列方向それぞれに合計をとる方法があります。

行列の合計値を得るためには、np.sum()関数を使います。以下のように、axis引数に0を指定すると、各列の合計値を求めることができます。同様に、axis引数に1を指定すると、各行の合計値を求めることができます。

import numpy as np
# 2次元配列を作成
a = np.array([[1, 2, 3], [4, 5, 6]])
# 列方向の合計値を求める
col_sum = np.sum(a, axis=0)
print(col_sum) # [5 7 9]
# 行方向の合計値を求める
row_sum = np.sum(a, axis=1)
print(row_sum) # [ 6 15]

上記のコードでは、np.sum()関数を使って、axis引数に0を指定して各列の合計値を求め、axis引数に1を指定して各行の合計値を求めています。

表示できる要素の上限を拡大する

NumPyの配列の表示できる要素の上限は、デフォルトで8要素になっています。この上限を変更する方法は、np.set_printoptions()関数を使います。以下のように、threshold引数に表示する要素の上限を指定することができます。

import numpy as np
# 表示する要素の上限を5に設定
np.set_printoptions(threshold=5)
# 10要素の1次元配列を作成
a = np.arange(10)
# 配列を表示
print(a) # [0 1 2 ... 7 8 9]

上記のコードでは、np.set_printoptions()関数を使って、threshold引数に5を指定しています。その後、10要素の1次元配列を作成し、print()関数で表示しています。この場合、要素の上限が5に設定されているため、配列の先頭5要素と最後の2要素以外は、...で省略されて表示されます。


というわけで、今回は以上です。大変大変お疲れ様でした。
引き続きで、徐々に発信していきます。

コメントや感想を受け付けています。ちょっとした感想でもいいので嬉しいです。

それでは、以上です。

最新情報をチェックしよう!