
【備忘録】python参照とコピー
pythonの参照とコピーについての備忘録です。自分が忘れがちだったのでnoteにも残しておきます。
ravel()とflatten()
どちらも配列を1次元にする関数です。
ravel()は参照
flatten()はコピー
意味はわからないと思いますが、flattenの方がコピーっぽいので覚えやすかったです。
スライス
スライスはこんなやつです。
b = a[:]
python標準のリストではスライスはコピーを返す。
numpyのスライスは参照を返す。
コピーの方がメモリを多く消費します。大量のデータを扱う場合はなるべく参照を使います。
b = a
b = aはbはaを参照する。
b = a.copy()はbはaのコピー。
pandasのdataframe
df_view = df.loc[:, :]。これも参照。
以下のコードで確認できる。
import pandas as pd
# 元の DataFrame
df = pd.DataFrame({'A': [1, 2, 3], 'B': [4, 5, 6]})
# loc を用いた選択
df_view = df.loc[:, :]
# 確認: 元の DataFrame を変更してみる
df.iloc[0, 0] = 100
# 結果を確認
print(df_view) # 変更が反映されていれば参照
まとめ
短いですが終わりです。python3のデータ分析試験の勉強中に混ざってしまった覚えがあるので同じような境遇の方は辞書がわりに使ってみてください。