NumPy配列のコピーと表示


コピーと表示の違い

コピーと配列のビューの主な違いは、コピーが新しい配列であり、ビューが元の配列の単なるビューであるということです。

コピーはデータを所有し、コピーに加えられた変更は元のアレイに影響を与えません。また、元のアレイに加えられた変更はコピーに影響を与えません。

ビューはデータを所有しておらず、ビューに加えられた変更は元の配列に影響し、元の配列に加えられた変更はビューに影響します。


コピー:

コピーを作成し、元の配列を変更して、両方の配列を表示します。

import numpy as np

arr = np.array([1, 2, 3, 4, 5])
x = arr.copy()
arr[0] = 42

print(arr)
print(x)

コピーは、元のアレイに加えられた変更の影響を受けないようにする必要があります。


見る:

ビューを作成し、元の配列を変更して、両方の配列を表示します。

import numpy as np

arr = np.array([1, 2, 3, 4, 5])
x = arr.view()
arr[0] = 42

print(arr)
print(x)

ビューは、元の配列に加えられた変更の影響を受ける必要があります。

ビューに変更を加えます。

ビューを作成し、ビューを変更して、両方の配列を表示します。

import numpy as np

arr = np.array([1, 2, 3, 4, 5])
x = arr.view()
x[0] = 31

print(arr)
print(x)

元の配列は、ビューに加えられた変更の影響を受ける必要があります。



アレイがデータを所有しているかどうかを確認します

上記のように、コピーはデータを所有し、ビューはデータを所有しません が、これをどのように確認できますか?

すべてのNumPy配列には、配列がデータを所有している場合にbase返される属性があります。None

それ以外の場合、base  属性は元のオブジェクトを参照します。

基本属性の値を出力して、配列がそのデータを所有しているかどうかを確認します。

import numpy as np

arr = np.array([1, 2, 3, 4, 5])

x = arr.copy()
y = arr.view()

print(x.base)
print(y.base)

コピーはを返しますNone
ビューは元の配列を返します。


エクササイズで自分をテストする

エクササイズ:

正しい方法を使用して、アレイのコピーを作成します。

arr = np.array([1, 2, 3, 4, 5])

x = arr.