NumPy 配列と dtype
ndarray を作成し、dtype を理解して、配列のプロパティを調べます。
「NumPy 配列と dtype」はCoddyKit上の無料Python Academyレッスンです。 これはレッスン1/4です。 下記で完全なレッスンを無料で読むことができます。その後、ブラウザ内の組み込みコードエディタと24時間対応のAIチューターでハンズオン演習できます。 これはPython Academy学習パスの一部であり、ウェブとCoddyKitアプリ全体で進捗が同期されます。 Python Academyコースには全4レッスンが含まれています。
NumPyとは
NumPyはndarrayを提供します。これは型が固定された連続メモリ上の配列で、Pythonのリストより桁違いに高速なベクトル化演算をサポートします。
import numpy as np
arr = np.array([1, 2, 3, 4, 5])
print(arr) # [1 2 3 4 5]
print(arr * 2) # [ 2 4 6 8 10] (no Python loop)配列の作成
一般的な作成関数には、np.array()、np.zeros()、np.ones()、np.arange()、np.linspace()があります。
import numpy as np
print(np.zeros((2, 3))) # 2x3 array of 0.0
print(np.ones(5)) # [1. 1. 1. 1. 1.]
print(np.arange(0, 10, 2)) # [0 2 4 6 8]
print(np.linspace(0, 1, 5)) # [0. 0.25 0.5 0.75 1. ]dtypes
NumPyの各配列には単一のdtypeがあります。一般的なdtypeには、int32、int64、float32、float64、bool、complex128があります。
import numpy as np
a = np.array([1, 2, 3]) # int64 by default
b = np.array([1.0, 2.0]) # float64
c = np.array([1, 2], dtype=np.float32)
print(a.dtype) # int64
print(c.dtype) # float32配列のShapeとndim
shapeは各次元のサイズを表すタプルです。ndimは次元数です。sizeは要素の総数です。
import numpy as np
m = np.ones((3, 4))
print(m.shape) # (3, 4)
print(m.ndim) # 2
print(m.size) # 12
print(m.dtype) # float64形状変更
reshape()は新しい形状のビューを返します(データは同じです)。flatten()は1次元配列としてコピーを返します。
import numpy as np
arr = np.arange(12)
mat = arr.reshape(3, 4)
print(mat)
# [[ 0 1 2 3]
# [ 4 5 6 7]
# [ 8 9 10 11]]
print(mat.flatten()) # [ 0 1 2 3 ...]型変換
arr.astype(dtype)を使うと、配列を別の型に変換できます。この操作は必ずコピーを返します。
import numpy as np
arr = np.array([1, 2, 3])
float_arr = arr.astype(np.float64)
print(float_arr) # [1. 2. 3.]
print(float_arr.dtype) # float64乱数配列
np.randomを使って、一様分布、正規分布、整数などの乱数配列を生成します。
import numpy as np
rng = np.random.default_rng(seed=42) # reproducible
print(rng.random(5)) # 5 uniform [0,1)
print(rng.standard_normal(3)) # 3 normal(0,1)
print(rng.integers(1, 10, 4)) # 4 ints [1,10)配列のメモリ使用量の確認
itemsizeは1要素あたりのバイト数を、nbytesはバイト数の合計を示します。
import numpy as np
arr = np.zeros(1_000_000, dtype=np.float64)
print(arr.itemsize) # 8
print(arr.nbytes) # 8_000_000 (8 MB)
small = arr.astype(np.float32)
print(small.nbytes) # 4_000_000 (4 MB)np.emptyとnp.full
np.emptyは初期化せずに領域を確保するため高速です。np.fullは定数値で埋めます。
import numpy as np
e = np.empty((2,3)) # uninitialised — random garbage values
f = np.full((2,3), fill_value=7)
print(f)
# [[7 7 7]
# [7 7 7]]コピーとビュー
NumPy配列をスライスすると、ビューが返されます(コピーは作成されません)。ビューを変更すると元の配列も変更されます。独立した配列が必要な場合は.copy()を使います。
import numpy as np
arr = np.array([1, 2, 3, 4])
view = arr[1:3]
view[0] = 99
print(arr) # [ 1 99 3 4] — original changed!
copy = arr[1:3].copy()
copy[0] = 0
print(arr) # unchanged構造化配列
構造化配列は、名前付きフィールドを持つ単一のndarrayに、Cの構造体のような異なる型のデータを格納します。
import numpy as np
dt = np.dtype([('name', 'U10'), ('age', np.int32), ('score', np.float64)])
people = np.array([
('Alice', 30, 95.5),
('Bob', 25, 87.3),
], dtype=dt)
print(people['name']) # ['Alice' 'Bob']確認問題
arr.reshape(3, 4)は何を返しますか。
まとめ
NumPyのndarrayは、型が固定された連続メモリ上の配列です。主な属性はshape、dtype、ndim、nbytesです。スライスはビューを返すため、独立させるには.copy()を使います。メモリを節約するには、必要十分な最小のdtypeを選びます。
よくある質問
「NumPy 配列と dtype」レッスンは無料ですか?
はい。「NumPy 配列と dtype」の完全なテキストはこのウェブで無料で読めます。インタラクティブに演習し(組み込みコードエディタと24時間対応のAIチューター)、Python Academyコースの残りをアンロックするには、CoddyKit PROにアップグレードしてください。 Python Academyコースには全4レッスンが含まれています。
「NumPy 配列と dtype」で何を学びますか?
ndarray を作成し、dtype を理解して、配列のプロパティを調べます。 ブラウザで直接実行するハンズオンコードでPython Academyを演習し、24時間対応のAIチューターがレッスンを進める中での質問に答えます。
Python Academyを始めるのに経験は必要ですか?
事前経験は必要ありません。CoddyKitのPython Academyは初級者から上級者向けに構成されているため、ここから始めるか最初から始めて、自分のペースで進むことができます。 これはレッスン1/4です。
「NumPy 配列と dtype」レッスンにはどのくらい時間がかかりますか?
ほとんどのCoddyKitレッスンは約5~10分かかります。各レッスンはコンパクトでインタラクティブなので、着実に進歩し、ウェブとアプリ全体で正確に前回の場所から再開できます。
このPython Academyレッスンでコードを書いて実行できますか?
はい。すべてのPython Academyレッスンに組み込みコードエディタが含まれているため、ブラウザでリアルコードを書いて実行し、即座のAIフィードバックを取得できます。ローカル設定は不要です。
このコースのすべてのレッスン
- NumPy 配列と dtype
- 配列演算とブロードキャスト
- インデックス指定、スライス、高度なインデックス指定
- NumPy による線形代数