スパースベクトルの扱い
scipy.sparse を使う
csr_matrix (Compressed Sparse Row matrix) または csc_matrix (Compressed Sparse Column) を使う
code:csr.py
import numpy as np
from scipy.sparse import csr_matrix
# スパースベクトル(CSR形式の1行行列として作成)
sparse_vector = csr_matrix(data)
# 非ゼロ要素の値
non_zero_values = sparse_vector.data
print(f"非ゼロ要素の値: {non_zero_values}") # 出力: 1 5 2 # 非ゼロ要素の列インデックス
column_indices = sparse_vector.indices
print(f"非ゼロ要素の列インデックス: {column_indices}") # 出力: 0 3 5 # 値とインデックスをペアにする
for idx, val in zip(sparse_vector.indices, sparse_vector.data):
print(f"インデックス: {idx}, 値: {val}")
# 複数行も、行単位で扱うなら CSR、列扱うなら CSC
data_list = [
]
matrix = csr_matrix(data_list)
matrix2.indices # => array(0, 4, dtype=int32) matrix2.data # => array(4, 5) # 横断で出てくるので気をつける必要ある
# 列アクセスもできる