os.path.join()とpathlib.Path()を使ってパス名を組み立てる

「os.path.join()」はPythonの標準ライブラリであるosモジュールの関数です。ファイルパスを適切に結合するために使用されます。複数のパス要素を受け取り、それらを一つのパスとして結合します。この関数を使うことで、異なるオペレーティングシステム間でのパスの違いを気にせずにコードを書くことができます。

「pathlib.Path()」はPython 3.4で追加されたライブラリです。ot.pathモジュールに代わって使うものとして位置づけられています。pathlibでは、ファイルシステムのパス名を文字列としてではなく、Pathオブジェクトとして扱います。Path()でPathオブジェクトを作ってから、文字としての「/」ではなく、演算子の「/」としてパスを組み立てます。

サンプルコード

現在のディレクトリにファイルパスを作成

os.path.join()

import os

# 現在のディレクトリにファイルパスを作成
current_directory = "."
filename = "sparse_matrix.npz"
file_path = os.path.join(current_directory, filename)

print(file_path)
# 結果
# ./sparse_matrix.npz

利用シーン:kaggleのnotebookで現在のディレクトリ(/kaggle/working)に疎行列を保存

import numpy as np
from scipy.sparse import csr_matrix, save_npz, load_npz

# 非ゼロ要素の値
data = np.array([1, 2, 3, 4, 5])

# 各非ゼロ要素が存在する行のインデックス
row_indices = np.array([0, 0, 1, 2, 2])

# 各非ゼロ要素が存在する列のインデックス
col_indices = np.array([0, 2, 2, 0, 1])

# CSR形式の疎行列を作成
sparse_matrix = csr_matrix((data, (row_indices, col_indices)), shape=(3, 3))

# データ型の確認
print(f"type(sparse_matrix):{type(sparse_matrix)}")

# 作成した疎行列の表示
print("疎行列:\n", sparse_matrix.toarray())

# 保存ファイル名
filename = 'sparse_matrix.npz'

# save_npzを使って疎行列(Compressed Sparse Row)を保存
save_npz(os.path.join(current_directory, filename), sparse_matrix)

# save_npzで保存した疎行列をload_npzで読み込む
loaded_sparse_matrix = load_npz(filename)

# データ型の確認
print(f"type(loaded_sparse_matrix):{type(loaded_sparse_matrix)}")

# 読み込んだ疎行列の表示
print("読み込んだ疎行列:\n", loaded_sparse_matrix.toarray())

pathlib.Path()

import numpy as np
from scipy.sparse import csr_matrix, save_npz, load_npz
from pathlib import Path

# 非ゼロ要素の値
data = np.array([1, 2, 3, 4, 5])

# 各非ゼロ要素が存在する行のインデックス
row_indices = np.array([0, 0, 1, 2, 2])

# 各非ゼロ要素が存在する列のインデックス
col_indices = np.array([0, 2, 2, 0, 1])

# CSR形式の疎行列を作成
sparse_matrix = csr_matrix((data, (row_indices, col_indices)), shape=(3, 3))

# データ型の確認
print(f"type(sparse_matrix): {type(sparse_matrix)}")

# 作成した疎行列の表示
print("疎行列:\n", sparse_matrix.toarray())

# 保存ファイルのパスを作成
current_directory = Path(".")
filename = current_directory / 'sparse_matrix.npz'

# save_npzを使って疎行列(Compressed Sparse Row)を保存
save_npz(filename, sparse_matrix)

# save_npzで保存した疎行列をload_npzで読み込む
loaded_sparse_matrix = load_npz(filename)

# データ型の確認
print(f"type(loaded_sparse_matrix): {type(loaded_sparse_matrix)}")

# 読み込んだ疎行列の表示
print("読み込んだ疎行列:\n", loaded_sparse_matrix.toarray())

参照

[1]Bill Lubanovic著『入門 Python 3 第2版』(オライリー・ジャパン、ISBN978-4-87311-932-8)

[2]https://docs.python.org/ja/3/library/pathlib.html

コメント

タイトルとURLをコピーしました