16. NumPyでベクトル・行列計算

NumPyでの配列の更新(代入、copyの違い)

更新日:

NumPyでの配列の値の更新は、値を代入することで更新することができます。但し、注意点として、ある配列を=で別の配列に代入しても、メモリー領域は共有されており、代入された配列の値を変更すると、元の配列の値も変わってしまいます。これを避ける為には、明示的にcopyでコピーする必要があります。これらの例を具体的に見ていきましょう。

 

動画教材紹介私(清水 義孝)が作成したコース「Pythonによるビジネスに役立つWebスクレイピング」(Udemyへのリンク)が新発売!今なら期間限定で89%オフ!!!

代入による配列の値の更新

まずは0~9までの値を格納したndarray型の配列を作成し、Xに格納します。

In [1]: X = np.arange(0,10)
...: X
Out[1]: array([0, 1, 2, 3, 4, 5, 6, 7, 8, 9])

 

Xの6番目の要素を5から55に更新します。

In [2]: X[5]=55
...: X
Out[2]: array([ 0, 1, 2, 3, 4, 55, 6, 7, 8, 9])

 

Xの0から5番目までの要素0~4を取り出し、Yに代入します。

In [3]: Y = X[:5] ...: Y
Out[3]: array([0, 1, 2, 3, 4])

 

Yの全ての要素を11に更新します。

In [4]: Y[:] = 11
...: Y
Out[4]: array([11, 11, 11, 11, 11])

 

再度Xの値を表示すると、Xの0から5番目までの要素も値が変わってしまっていることがわかります。これはXの値をYに=で代入したのですが、XとYの値が格納されているメモリー領域は共有されており、Yの値を変更しただけで、Xの値も変わってしまったのです。

In [5]: X
Out[5]: array([11, 11, 11, 11, 11, 55, 6, 7, 8, 9])

 
 
 

動画教材紹介私(清水 義孝)が作成したコース「Pythonによるビジネスに役立つWebスクレイピング」(Udemyへのリンク)が新発売!今なら期間限定で89%オフ!!!

copyによる配列の値の更新

代入による更新の問題を避ける為には、Xの値をYに=で代入するのではなく、copyを使います。先ほどと同様、まずは0~9までの値を格納したndarray型の配列を作成し、Xに格納します。

In [6]: X = np.arange(0,10)
...: X
Out[6]: array([0, 1, 2, 3, 4, 5, 6, 7, 8, 9])

 

次に、今度はcopyを用いてXの要素をYにコピーします。

In [7]: Y = X.copy()
...: Y
Out[7]: array([0, 1, 2, 3, 4, 5, 6, 7, 8, 9])

 

Yの全ての要素を11に更新します。

In [8]: Y[:]=11
...: Y
Out[8]: array([11, 11, 11, 11, 11, 11, 11, 11, 11, 11])

 

再度Xの値を表示すると、今度はXの値は変わっておらず、0~9までの値が表示されました。

In [9]: X
Out[9]: array([0, 1, 2, 3, 4, 5, 6, 7, 8, 9])

 
 
 
著書の紹介です。

 






まとめ記事

1

Python3におけるWEBスクレイピングのやり方について初心者向けに解説した記事です。   Requests、Beautiful Soup、Selenium、Pandas、newspape ...

2

Pythonの基本的なトピックについて、チュートリアル形式で初心者向けに解説した記事です。プログラミング未経験者や初心者でもわかりやすいよう、丁寧に解説しています。   Pythonでデータ ...

3

Pandas(パンダス)とは、データを効率的に扱うために開発されたPythonのライブラリの1つで、データの取り込みや加工・集計、分析処理に利用します。   Pandasには2つの主要なデー ...

4

データ分析、機械学習、ディープラーニングにはグラフの描画による可視化は不可欠です。データは、加工前の状態ではただの数字の羅列でしかなく、一目で必要な情報が伝わるものではありません。それを集計しグラフに ...

5

NumPy(ナンパイ)は、数値計算を効率的に行うための拡張ライブラリです。ベクトルや行列などを効率的に数値計算するための数学関数ライブラリを提供します。NumPyを使うことにより、数値計算をより早く、 ...

-16. NumPyでベクトル・行列計算

Copyright© AI-interのPython3入門 , 2020 All Rights Reserved.