NumPyの中心となるデータ構造 ndarray(N-dimensional array)は、Python標準のリストよりも高速でメモリ効率が良く、豊富な数学関数を備えています。
ご提示いただいたコードには、arange(連番生成)や linspace(等分割)、スライシング、型指定といった重要な要素が含まれています。これらを整理し、誤字(aragen, prntなど)を修正した実行可能なコードと解説を以下に示します。
目次
実行可能なサンプルコード
import numpy as np
def ndarray_operations():
print("=== 1. ndarrayの生成 ===")
# リストから生成
x = np.array([1, 0, 1])
print(f"From List: {x}")
# 範囲指定で生成 (arange)
# np.arange(開始, 終了, ステップ) -> 終了値は含まない
x1 = np.arange(1, 10)
print(f"arange(1, 10): {x1}")
x2 = np.arange(1, 10, 2)
print(f"arange(step 2): {x2}")
# 要素数を指定して生成 (linspace)
# np.linspace(開始, 終了, 要素数) -> 終了値を含む等間隔な値
x_lin = np.linspace(1, 2, 5)
print(f"linspace(1, 2, 5): {x_lin}")
print("\n=== 2. データアクセスと変更 ===")
x_acc = np.array([1, 2, 3, 4, 5])
# インデックス指定
print(f"Index 0: {x_acc[0]}")
# スライシング [開始:終了] -> 終了インデックスは含まない
print(f"Slice 0:2: {x_acc[0:2]}")
# 後ろからアクセス
print(f"Index -1: {x_acc[-1]}")
# データの変更
x_mod = np.array([1, 2, 3])
print(f"Before: {x_mod}")
x_mod[0] = 100
print(f"After: {x_mod}")
print("\n=== 3. データ型 (dtype) ===")
# 型の自動推定
# 整数のみなら int32 または int64 になる
x_int = np.array([1, 2, 3])
print(f"Default: {x_int.dtype}")
# 型の明示的指定
# dtype=np.float64 で浮動小数点数として作成
x_float = np.array([1, 2, 3], dtype=np.float64)
print(f"Explicit: {x_float.dtype}")
print(f"Values: {x_float}") # 1. 2. 3. と表示される
if __name__ == "__main__":
ndarray_operations()
解説:生成関数の使い分け
1. np.arange(start, stop, step)
Python標準の range() 関数のNumPy版です。
- 特徴: 「データの間隔(ステップ)」を指定します。
- 注意:
stopの値は含まれません。 - 用途: 「1つ飛ばしで取得したい」「0.1刻みで取得したい」場合など。
2. np.linspace(start, stop, num)
Linear Space(線形空間)の略です。
- 特徴: 「データの個数」を指定します。指定した区間を等間隔に分割します。
- 注意: デフォルトでは
stopの値を含みます。 - 用途: グラフ描画用のx軸データ作成など、「この範囲を滑らかに50分割したい」といった場合。
解説:データ型(dtype)
NumPyの配列は、Pythonのリストと異なり「すべての要素が同じデータ型」である必要があります。
int64/int32: 整数。float64/float32: 浮動小数点数(小数)。float64(倍精度)が標準です。- 指定方法:
dtype引数を使用します。メモリ節約のためにあえてfloat32やint8を指定することもあります。
