【完全ガイド】NumPyでデータの形状を一発チェック!初心者でもすぐに使える4つの方法

PR表記

※アフィリエイト広告を利用しています

どうもニコイチです。データ分析や機械学習の分野では、データの構造を正しく理解することが非常に重要です。Pythonの数値計算ライブラリであるNumPyを使うと、簡単にデータの形状や特徴を確認できます。

前回の記事では、NumPyを使ってデータを保存したり読み込んだりする方法について説明しました。今回は、読み込んだデータがどのような構造を持っているのかを確認する方法に焦点を当てます。

本記事では、NumPyを使ってデータを確認するための以下の4つの方法について詳しく解説します。

  1. データの形状(shape)を確認する
  2. データの長さ(len)を確認する
  3. データの次元数(ndim)を確認する
  4. データのサイズ(size)を確認する

これらのメソッドを適切に活用することで、データの基本的な構造を把握し、エラーを防ぐことができます。記事の後半では、実際にデータを読み込んで確認する演習も行います。

目次

NumPyでデータの形状を確認する

データの形状(サイズや次元の構成)を確認するには、NumPyの .shape 属性を使用します。

.shape とは?

.shape は、配列の行数・列数・次元のサイズをタプル((行数, 列数, …))で返します。
例えば、以下のような2次元配列を考えてみましょう。

.shape の使い方

import numpy as np

# 3×4 の2次元配列を作成
arr = np.array([[0, 1, 2, 3],
                [4, 5, 6, 7],
                [8, 9, 10, 11]])

# 配列の形状を確認
print(arr.shape)

出力結果:

(3, 4)

この結果から、**「3行4列の二次元配列である」**ことがわかります。

.shape の出力結果の解釈

.shape が返すタプルの各要素は、次のように解釈できます。

.shape の出力解釈
(3, 4)3行4列の二次元配列
(5, 2)5行2列の二次元配列
(3, 2, 4)4列の2次元配列が2つあり、それが3つある三次元配列

例えば、次の三次元配列の場合:

arr_3d = np.random.rand(2, 3, 4)
print(arr_3d.shape)

出力結果:

(2, 3, 4)

これは、「3行4列の二次元配列が2つある」三次元配列であることを意味します。

.shape を使うメリット

  • データの整合性を確認できる(例えば、学習データとラベルのサイズが合っているかチェック)
  • 機械学習モデルへの入力データの形式を確認できる(形状が違うとエラーになることが多い)
  • データを変換する際の基準になる(リシェイプ reshape() などを適切に適用できる)

NumPyでデータの長さを確認する

データの長さ(要素数)を確認するには、Pythonの組み込み関数 len() を使います。len() は通常、リストや文字列の長さを取得するために使われますが、NumPyの配列にも適用できます。


len() を使った配列の長さの取得

例えば、以下のような2次元配列を作成して len() を適用してみましょう。

import numpy as np

# 3×4 の2次元配列を作成
arr = np.array([[0, 1, 2, 3],
                [4, 5, 6, 7],
                [8, 9, 10, 11]])

# 配列の長さを確認
print(len(arr))

出力結果:

3

この結果から、最外層(最も外側の次元)の要素数が3であることがわかります。


.shape[0] との違い

実は、len(arr) の結果は arr.shape[0] と同じ値になります。

print(arr.shape[0])  # 最外層の要素数を取得

出力結果:

3

.shape[0] を使うと、len() と同じく最外層のサイズを取得できます。ただし、多次元配列の場合は .shape の他の要素を利用して、より詳細な情報を取得できます。


len() の使いどころ

len() は、リストや1次元配列に適用すると単純に要素数を返しますが、多次元配列では 最外層の要素数 を返します。
以下の例を見てみましょう。

arr_1d = np.array([1, 2, 3, 4, 5])
print(len(arr_1d))  # 1次元配列

arr_2d = np.array([[1, 2, 3], [4, 5, 6]])
print(len(arr_2d))  # 2次元配列

arr_3d = np.array([[[1, 2], [3, 4]], [[5, 6], [7, 8]]])
print(len(arr_3d))  # 3次元配列

出力結果:

5  # 1次元配列の要素数
2  # 2次元配列の最外層の要素数(行数)
2  # 3次元配列の最外層の要素数(ブロック数)

3次元配列では、「最も外側の次元(第一軸)」の要素数が返っていることに注意してください。


len() を使うメリット

  • データの行数を簡単に取得できる(CSVデータなどの行数チェックに便利)
  • リストやNumPy配列の長さを統一的に扱える
  • 可読性が高く、初心者でも理解しやすい

ただし、len() だけでは多次元配列の詳細な構造はわからないため、.shape.ndim と組み合わせて使用するのが効果的です。

NumPyでデータの次元数を確認する

データの次元数を確認するには、NumPyの .ndim 属性を使います。
.ndim を使用すると、配列の**次元(階層の深さ)**を取得できます。


.ndim とは?

.ndim は、配列が何次元のデータであるかを整数で返します。
例えば、1次元配列なら 1、2次元配列なら 2、3次元配列なら 3 という値が得られます。


.ndim の使い方

以下のコードで、1次元・2次元・3次元配列の .ndim の出力結果を確認してみましょう。

import numpy as np

# 1次元配列(ベクトル)
arr_1d = np.array([1, 2, 3, 4, 5])
print(arr_1d.ndim)  # 1

# 2次元配列(行列)
arr_2d = np.array([[1, 2, 3], [4, 5, 6]])
print(arr_2d.ndim)  # 2

# 3次元配列(3Dデータ)
arr_3d = np.array([[[1, 2], [3, 4]], [[5, 6], [7, 8]]])
print(arr_3d.ndim)  # 3

出力結果:

1  # 1次元配列
2  # 2次元配列
3  # 3次元配列

それぞれの次元の意味は以下のようになります。

.ndim の値配列の種類
11次元(ベクトル)[1, 2, 3, 4, 5]
22次元(行列)[[1, 2, 3], [4, 5, 6]]
33次元(データの集合)[[[1, 2], [3, 4]], [[5, 6], [7, 8]]]

.ndim.shape の関係

.shape の出力結果と .ndim の値は密接に関係しています。
例えば、以下のような .shape の配列があった場合、それに対応する .ndim の値は次のようになります。

.shape の出力.ndim の値配列の次元
(5,)11次元配列
(3, 4)22次元配列(3行4列)
(2, 3, 4)33次元配列(2つの3行4列の行列)

例えば、以下のような配列を考えてみましょう。

arr = np.zeros((4, 3, 2))  # 4×3×2 の3次元配列
print(arr.shape)  # (4, 3, 2)
print(arr.ndim)   # 3

.shape の長さが3つあるため、この配列は3次元配列であるとわかります。


.ndim を使うメリット

  • データが何次元なのかを簡単に確認できる
  • データの形状を把握しやすくなる
  • 機械学習の入力データが適切な次元かチェックできる
  • データの変換(reshape() など)を行う際の基準になる

例えば、ニューラルネットワークでは 2Dデータ(画像)3Dデータ(動画や時系列) を扱うため、次元を正しく理解していないとエラーが発生することがあります。

NumPyでデータのサイズ(要素数)を確認する

データのサイズ(要素数)を確認するには、NumPyの .size 属性を使います。
.size を使用すると、配列内に含まれる全ての要素の総数を取得できます。


.size とは?

.size は、配列内の全要素の数を整数で返します。
例えば、行列の行数や列数に関係なく、すべてのデータの個数を取得できるのが特徴です。


.size の使い方

まずは、2次元配列で .size の動作を確認してみましょう。

import numpy as np

# 3×4 の2次元配列を作成
arr = np.array([[0, 1, 2, 3],
                [4, 5, 6, 7],
                [8, 9, 10, 11]])

# 配列のサイズ(要素数)を確認
print(arr.size)

出力結果:

12

この結果から、**「配列内に12個の要素がある」**ことがわかります。


.size.shape の関係

.size の値は .shape のすべての要素を掛け算した結果と等しくなります。
例えば、上記の arr.shape(3, 4) でした。

print(arr.shape)  # (3, 4)
print(3 * 4)      # 12

このように、.shape の各次元の値を掛けることで .size の結果と一致することが確認できます。

多次元配列での .size の確認

以下のような3次元配列を作成して .size を確認してみましょう。

arr_3d = np.zeros((2, 3, 4))  # 2×3×4 の3次元配列
print(arr_3d.size)  # 要素の総数
print(arr_3d.shape) # 配列の形状

出力結果:

24
(2, 3, 4)

2 × 3 × 4 = 24 なので、.size の値は 24 になります。


.size を使うメリット

  • 配列の総要素数を簡単に取得できる
  • データの規模を把握できる(例えば、大きすぎるデータを警戒できる)
  • .shape との組み合わせでデータの整合性チェックが可能
  • 配列の変換(reshape() など)を行う際の基準になる

例えば、データの要素数が一致しないと reshape() がエラーを出すことがあります。

arr = np.arange(12)  # 1次元配列(要素数12)
reshaped_arr = arr.reshape(3, 4)  # (3,4)に変換
print(reshaped_arr.shape)  # (3, 4)

.size を使って要素数を事前に確認すれば、適切な変換が可能かどうか判断できます。

実践:読み込んだデータの形状を確認する

ここまで、NumPyを使ってデータの形状や長さ、次元数、要素数を確認する方法について学んできました。
この章では、実際にデータを読み込んで、これらの情報を確認する方法を実践してみます。


CSVファイルをNumPyで読み込む

まずは、NumPyの loadtxt() 関数を使ってCSVファイルを読み込みます。
今回は、仮のデータとして 6列の数値データを含むCSVファイル を想定します。

import numpy as np

# CSVファイルの読み込み
arr = np.loadtxt(fname="data.csv", dtype=int, delimiter=',', skiprows=1, usecols=[1,2,3,4,5,6])

# データの表示
print(arr)

読み込んだデータの形状を確認

データの基本的な情報を確認するために、以下の4つのメソッドを使います。

# 形状の出力
print("Shape:", arr.shape)

# 長さの出力
print("Length:", len(arr))

# 次元数の出力
print("Dimensions:", arr.ndim)

# 要素数の出力
print("Size:", arr.size)

例えば、以下のようなデータが入っていた場合:

[  42120   42330   41700   41830  610000 25628028000]
[  43000   43220   42540   42660  448400 19188227000]
[  43940   43970   43270   43270  339900 14780670000]
...
[  13990   14030   13790   13850  765500 10635609000]
[  13720   13840   13600   13800  511500  7030811000]
[  14050   14050   13700   13720  559100  7719804000]

出力結果は以下のようになります。

Shape: (1226, 6)
Length: 1226
Dimensions: 2
Size: 7356

結果の分析

メソッド結果解釈
arr.shape(1226, 6)1226行6列の二次元配列
len(arr)1226最外層の要素数(行数)
arr.ndim2データが二次元配列であることを示す
arr.size7356総要素数(1226 × 6 = 7356)

練習問題

以下の4つの選択肢の中から、正しい記述を選んでください。

  1. このデータは全部で7346個の要素を持ったデータである。
  2. このデータは1226行6列の三次元配列である。
  3. このデータの長さは1226である。
  4. このデータの次元数は二次元である。

正解と解説

正解:
3. このデータの長さは1226である。
4. このデータの次元数は二次元である。

解説:

  • 1は誤り.size の値は 7356 なので、7346ではありません。
  • 2は誤り.ndim の値が 2 なので、三次元配列ではなく 二次元配列 です。
  • 3は正しい.shape[0] の値が 1226 なので、最外層の要素数(行数)は 1226 です。
  • 4は正しい.ndim の値が 2 なので、これは二次元配列です。

まとめ

NumPyを使ってデータを読み込んだら、まず .shape を確認する習慣をつけましょう。
また、.shapelen().ndim.size を組み合わせてデータの構造を理解することが重要です。

まとめ

本記事では、NumPyを使ってデータの形状や特徴を確認する方法について学びました。
データを扱う際には、形状や次元を正しく理解することが重要です。
今回学んだ4つのメソッドを復習し、それぞれの特徴を整理しましょう。


本記事のポイント

メソッド説明出力の意味
.shape配列の形状(行数・列数など)を取得(行数, 列数, ... )
len()配列の最外層の要素数を取得行数と同じ値になることが多い
.ndim配列の次元数を取得1(1次元)・2(2次元)・3(3次元)…
.size配列の全要素数を取得shape の要素を掛け合わせた値

実際のデータを確認する流れ

  1. データを読み込む arr = np.loadtxt("data.csv", dtype=int, delimiter=',', skiprows=1)
  2. データの形状を確認する(.shape print("Shape:", arr.shape)
  3. データの長さを確認する(len() print("Length:", len(arr))
  4. データの次元数を確認する(.ndim print("Dimensions:", arr.ndim)
  5. データの総要素数を確認する(.size print("Size:", arr.size)

この流れを覚えておくと、新しいデータを扱う際にすぐに構造を確認できるようになります。


次回の記事の予告

今回の記事では、NumPyの基本的なデータ確認方法について学びました。
次回は、NumPyを使ったデータの統計的な分析について解説していきます。
例えば、以下のようなメソッドを活用する方法を紹介する予定です。

✅ 平均値(np.mean()
✅ 中央値(np.median()
✅ 標準偏差(np.std()
✅ 最大値・最小値(np.max()np.min()

データの特徴を把握するために、これらの統計値をどのように活用するのかを解説していきますので、ぜひお楽しみに!


さいごに

NumPyを使うと、簡単なコードでデータの形状を確認できるため、データ分析の準備がスムーズに進みます。
ぜひ、実際にコードを動かしながら、学んだことを実践してみてください!

それでは、次回の記事でお会いしましょう! 🚀


よかったらシェアしてね!
  • URLをコピーしました!
  • URLをコピーしました!

コメント

コメントする

CAPTCHA


目次