
9
1.2 NumPy の N 次元配列
[6 2]
ここで、
y
を編集したのにもかかわらず、
x
の値まで変更されてしまうことに注意してくださ
い。これは、
y
が同じデータを参照していたからです。
# Now the first element in x has changed to 6!
x
の先頭の要素が
6
に変更された。
print(x)
[6 2 3]
つまり、配列を参照する際には要注意ということです。元データを変えずにデータをいじりたい
場合には、以下のように簡単にコピーできます。
y = np.copy(x[:2])
1.2.2
ベクトル化
本章の前の部分で配列に作用させる演算のスピードについて述べました。高速化のために
NumPy
が使う手の
1
つがベクトル化です。処理がベクトル化されていれば、配列の各要素に演算
を作用させるときに、
for
ループは必要ありません。結果として、高速になる上に、コードがより
自然で読みやすくなります。少し具体例を見ていきましょう。
x = np.array([1, 2, 3, 4])
print(x * 2)
[2 4 6 8]
最初の例は、
x
が
4
個の要素を持つ配列です。上記の例では、明示的に指示することなく、
x
の
各要素に
2
を掛けています。
y = np.array([0, 1, 2, 1])
print(x + y)
[1 3 5 5]
次に、
x
の中の各要素に、同じ形状の配列
y
の対応する要素を足しました。
上の
2
つの演算は、どちらも簡単で、ベクトル化の直観的な例になっていると思います。また ...