ページの作成
親となるページを選択してください。
親ページに紐づくページを子ページといいます。
例: 親=スポーツ, 子1=サッカー, 子2=野球
子ページを親ページとして更に子ページを作成することも可能です。
例: 親=サッカー, 子=サッカーのルール
親ページはいつでも変更することが可能なのでとりあえず作ってみましょう!
| この記事の要点 |
|
多次元配列とは
NumPy の ndarray (N-dimensional array) は、同じ型の要素が連続したメモリ上に格納された配列です。Python の組込みリストよりも圧倒的に高速 (C 実装) で、ベクトル演算 / 行列演算 / ブロードキャストなど数値計算に必要な機能を持ちます。
リストから作成
import numpy as np
# 1 次元 (ベクトル)
a = np.array([1, 2, 3, 4])
print(a) # [1 2 3 4]
print(a.shape) # (4,)
print(a.ndim) # 1
# 2 次元 (行列)
b = np.array([[1, 2, 3],
[4, 5, 6]])
print(b.shape) # (2, 3) → 2 行 3 列
print(b.ndim) # 2
print(b.size) # 6 (要素数の総数)
# 3 次元 (テンソル)
c = np.array([[[1, 2], [3, 4]],
[[5, 6], [7, 8]]])
print(c.shape) # (2, 2, 2)
print(c.ndim) # 3
# dtype を明示
d = np.array([1, 2, 3], dtype=np.float32)
print(d.dtype) # float32
形状指定で初期化
| 関数 | 動作 | 例 |
|---|---|---|
np.zeros(shape) | 0 で埋める | np.zeros((3,4)) |
np.ones(shape) | 1 で埋める | np.ones((2,3,4)) |
np.full(shape, v) | 任意値で埋める | np.full((3,3), -1) |
np.empty(shape) | 初期化なし (高速だが値は不定) | np.empty((1000,1000)) |
np.eye(n) | 単位行列 | np.eye(3) |
np.identity(n) | 単位行列 (同上) | np.identity(4) |
np.zeros_like(a) | a と同じ形状の 0 配列 | np.zeros_like(b) |
import numpy as np
# 3 行 4 列のゼロ行列
z = np.zeros((3, 4))
print(z)
# [[0. 0. 0. 0.]
# [0. 0. 0. 0.]
# [0. 0. 0. 0.]]
# 整数型のゼロ
zi = np.zeros((2, 3), dtype=np.int32)
# 任意値で埋める
full = np.full((2, 3), 7)
# [[7 7 7]
# [7 7 7]]
# 単位行列
e = np.eye(3)
# [[1. 0. 0.]
# [0. 1. 0.]
# [0. 0. 1.]]
連番 / 等間隔 / 乱数
import numpy as np
# 連番 (Python の range と同じ)
a = np.arange(12)
# [ 0 1 2 3 4 5 6 7 8 9 10 11]
# reshape で形状変換
b = np.arange(12).reshape(3, 4)
# [[ 0 1 2 3]
# [ 4 5 6 7]
# [ 8 9 10 11]]
# 等間隔 (0 〜 1 を 5 等分)
c = np.linspace(0, 1, 5)
# [0. 0.25 0.5 0.75 1. ]
# 一様乱数 [0, 1)
np.random.seed(42)
r1 = np.random.rand(3, 4)
# 標準正規分布
r2 = np.random.randn(3, 4)
# 整数乱数 [0, 100)
r3 = np.random.randint(0, 100, size=(3, 4))
# 推奨: Generator API (NumPy 1.17+)
rng = np.random.default_rng(seed=42)
r4 = rng.uniform(0, 1, size=(3, 4))
r5 = rng.integers(0, 100, size=(3, 4))
dtype (データ型)
| dtype | サイズ | 用途 |
|---|---|---|
np.int8 / int16 / int32 / int64 | 1 / 2 / 4 / 8 B | 整数 |
np.uint8 / uint16 / ... | 同上 | 符号なし整数 (画像 0-255 等) |
np.float16 / float32 / float64 | 2 / 4 / 8 B | 浮動小数 |
np.complex64 / complex128 | 8 / 16 B | 複素数 |
np.bool_ | 1 B | 真偽値 |
np.object_ | 可変 | Python オブジェクト (低速) |
import numpy as np
# 型変換 (新しい配列を返す)
a = np.array([1.5, 2.7, 3.9])
b = a.astype(np.int32) # [1 2 3] ← 切り捨て
# 型確認
print(a.dtype) # float64
print(a.itemsize) # 8 (1 要素のバイト数)
print(a.nbytes) # 24 (合計バイト数)
インデックスとスライス
import numpy as np
a = np.arange(12).reshape(3, 4)
# [[ 0 1 2 3]
# [ 4 5 6 7]
# [ 8 9 10 11]]
# 単一要素 (推奨: カンマ区切り)
print(a[1, 2]) # 6
print(a[1][2]) # 6 ← 動くがテンポラリを作るので遅い
# 行ごと
print(a[0]) # [0 1 2 3]
print(a[:, 1]) # [1 5 9] ← 列ごと
# スライス
print(a[0:2, 1:3])
# [[1 2]
# [5 6]]
# 末尾から
print(a[-1]) # [ 8 9 10 11]
print(a[:, -1]) # [ 3 7 11]
# Boolean インデックス
mask = a > 5
print(a[mask]) # [ 6 7 8 9 10 11]
# Fancy インデックス
print(a[[0, 2]]) # 0 行目と 2 行目を抽出
# [[ 0 1 2 3]
# [ 8 9 10 11]]
軸 (axis) の概念
多次元配列を扱う上で最重要なのが axis です。(行, 列) の配列なら axis=0 が行方向 (縦)、axis=1 が列方向 (横) です。
import numpy as np
a = np.array([[1, 2, 3],
[4, 5, 6]])
# 全体の合計
print(a.sum()) # 21
# 列ごとの合計 (axis=0 を潰す → 行を縦に集計)
print(a.sum(axis=0)) # [5 7 9]
# 行ごとの合計 (axis=1 を潰す)
print(a.sum(axis=1)) # [ 6 15]
# 同じく mean / max / min / std もすべて axis を取れる
print(a.mean(axis=0)) # [2.5 3.5 4.5]
print(a.max(axis=1)) # [3 6]
形状変換 (reshape / ravel / flatten)
import numpy as np
a = np.arange(12)
# (12,)
# 3 行 4 列に
b = a.reshape(3, 4)
# (3, 4)
# -1 は自動推定
c = a.reshape(2, -1) # (2, 6)
d = a.reshape(-1, 3) # (4, 3)
# 1 次元化
e = b.ravel() # ビュー (元データ共有)
f = b.flatten() # コピー
# 軸入れ替え (転置)
g = b.T # (4, 3)
h = b.transpose() # 同上
# 軸追加 / 削除
x = np.array([1, 2, 3])
y = x[np.newaxis, :] # (1, 3)
z = x[:, np.newaxis] # (3, 1)
FAQ
Q: np.zeros と np.empty の使い分けは?
A: 値が必要なら zeros、すぐ上書きするなら empty (初期化分の時間を節約)。1000x1000 で約 4 倍速い。
Q: shape の順序が直感と逆に感じる
A: (行数, 列数) = (高さ, 幅) です。画像処理では (H, W, C) = (高さ, 幅, チャネル) が標準。
Q: 要素数が合わずに reshape できない
A: 元の size と reshape 後の積が一致する必要があります。np.arange(10).reshape(3,4) はサイズ不一致でエラー。
ページの作成
親となるページを選択してください。
親ページに紐づくページを子ページといいます。
例: 親=スポーツ, 子1=サッカー, 子2=野球
子ページを親ページとして更に子ページを作成することも可能です。
例: 親=サッカー, 子=サッカーのルール
親ページはいつでも変更することが可能なのでとりあえず作ってみましょう!
子ページ
子ページはありません
同階層のページ
人気ページ
- 1 Eclipseで「サーバーに追加または除去できるリソースがありません。」の原因と対処法
- 2 tomcat の起動 / 停止ログと catalina.log・catalina.out の違い
- 3 JavaScript base URL 取得方法|window.location.origin と SSR/Node.js 対応
- 4 YouTube Data API v3 エラー一覧|403/400/404 の主要原因と切り分け
- 5 Spring Frameworkのアノテーション一覧
- 6 Laravel エラー一覧|500/Blade/DB 接続/ルーティングの代表エラー
- 7 3Dグラフィックスとは|モデリング/レンダリング/主要ソフトウェア (Blender / Maya)
- 8 【Spring】@Valueアノテーションとは
- 9 CATALINA_HOME の確認方法 (Linux / Mac)
- 10 【Spring】@Autowiredアノテーションとは
最近更新/作成されたページ
- Laravel キャッシュクリア完全ガイド(cache:clear / config:clear / 2026-05-18 07:42:07
- プロジェクトの作成と削除 2026-05-18 07:42:07
- インストール直後にNetbeansが反応しない 2026-05-18 07:42:07
- 動画やチャンネルの検索 2026-05-18 07:42:07
- APIキー取得方法 2026-05-18 07:42:07
- チャンネル情報の取得 2026-05-18 07:42:07
- API 入門 — Web API(REST / GraphQL / gRPC / 2026-05-18 07:42:07
- インストール(eclipseプラグイン) 2026-05-18 07:42:07
- Laravel「Dotenv values containing spaces must be surrounded 2026-05-18 07:42:07
- エラー一覧 2026-05-18 07:42:07
- curl: (51) SSL: certificate subject name '~' does not match 2026-05-18 07:42:07
- インストール方法(Windows版) 2026-05-18 07:42:07
- JSONから配列に変換 2026-05-18 07:42:07
- 処理を一定時間待つ 2026-05-18 07:42:07
- A non well formed numeric value encountered 2026-05-18 07:42:07
コメントを削除してもよろしいでしょうか?