NumPy の基本的な配列作成技術

PythonPythonBeginner
今すぐ練習

This tutorial is from open-source community. Access the source code

💡 このチュートリアルは英語版からAIによって翻訳されています。原文を確認するには、 ここをクリックしてください

はじめに

この実験では、Python における配列コンテナの基本ライブラリである NumPy を使用して配列を作成する方法について、手順を追って説明します。配列作成のさまざまな方法を学びます。Python シーケンスの変換、NumPy 固有の配列作成関数の使用、既存の配列の複製と結合、ディスクからの配列の読み取り、生のバイトからの配列の作成、および特殊なライブラリ関数の使用です。

注: 01-array-creation.ipynb でコードを記述できます。手順では一部の出力操作を省略していますので、必要に応じて出力を表示できます。

Python シーケンスを NumPy 配列に変換する

NumPy 配列を作成するには、リストやタプルなどの Python シーケンスを変換できます。方法は以下の通りです。

import numpy as np

## リストから 1 次元配列を作成する
a1D = np.array([1, 2, 3, 4])

## リストのリストから 2 次元配列を作成する
a2D = np.array([[1, 2], [3, 4]])

## ネストしたリストから 3 次元配列を作成する
a3D = np.array([[[1, 2], [3, 4]], [[5, 6], [7, 8]]])

配列を作成する際には、dtype パラメータを使用してデータ型を指定することもできます。オーバーフローや予期しない結果を避けるため、データ型の割り当てには注意が必要です。

NumPy 固有の配列作成関数を使用する

NumPy は配列を作成するための組み込み関数を提供しています。以下はいくつかの例です。

import numpy as np

## 定期的に増加する値を持つ 1 次元配列を作成する
arr1D = np.arange(10)

## 特定のデータ型を持つ 1 次元配列を作成する
arr1D_float = np.arange(2, 10, dtype=float)

## 指定された要素数の 1 次元配列を作成する
arr1D_linspace = np.linspace(1., 4., 6)

## 2 次元の単位行列を作成する
identity_matrix = np.eye(3)

## 対角線に与えられた値を持つ 2 次元配列を作成する
diag_matrix = np.diag([1, 2, 3])

## バンダーモンド行列を作成する
vander_matrix = np.vander([1, 2, 3, 4], 2)

## ゼロで埋められた配列を作成する
zeros_array = np.zeros((2, 3))

## 1 で埋められた配列を作成する
ones_array = np.ones((2, 3))

## ランダムな値で埋められた配列を作成する
random_array = np.random.default_rng(42).random((2, 3))

既存の配列を複製、結合、または変更する

配列を作成したら、新しい配列を作成するためにそれらを複製、結合、または変更できます。配列またはその要素を新しい変数に割り当てるときは、元の配列へのビューではなく新しい配列を作成するために np.copy 関数を使用します。以下は例です。

import numpy as np

## 配列を作成する
a = np.array([1, 2, 3, 4])

## 配列の最初の 2 要素のビューを作成する
b = a[:2]

## ビューを変更する
b += 1

## 元の配列と変更されたビューを表示する
print('a =', a, '; b =', b)

配列を結合するには、np.vstacknp.hstacknp.block などの関数を使用できます。np.block を使用して 4 つの 2x2 の配列を 4x4 の配列に結合する例を以下に示します。

import numpy as np

A = np.ones((2, 2))
B = np.eye(2)
C = np.zeros((2, 2))
D = np.diag((-3, -4))

result = np.block([[A, B], [C, D]])

ディスクから配列を読み込む

ディスクから配列を様々な形式で読み込むことができます。標準のバイナリ形式では、HDF5 用の h5py や FITS 用の Astropy などの Python ライブラリがあります。CSV や TSV などの一般的な ASCII 形式では、np.loadtxtnp.genfromtxt 関数を使用できます。以下は CSV ファイルを読み込む例です。

import numpy as np

data = np.loadtxt('data.csv', delimiter=',', skiprows=1)

まとめ

この実験では、NumPy を使って配列を作成する方法を学びました。Python シーケンスを変換する方法、NumPy 固有の配列作成関数を使う方法、既存の配列を複製・結合する方法、ディスクから配列を読み込む方法、生のバイト列から配列を作成する方法、および特殊なライブラリ関数を使う方法など、さまざまな方法を学びました。これらの技術を使えば、さまざまな科学的およびデータ分析タスクに対して効率的に配列を作成および操作することができます。