single
配列のコピー
メニューを表示するにはスワイプしてください
配列のコピーを作成して、元の配列に影響を与えずに変更を加える必要がある場合がよくあります。
単純な代入
まず、array_2 = array_1 のように新しい変数を作成するだけではいけない理由について説明します。ここで、array_1 は元の配列です。
123456import numpy as np array_1 = np.array([1, 2, 3]) array_2 = array_1 # Setting the first element of array_2 to 10 array_2[0] = 10 print(array_1)
array_2 の最初の要素の値を 10 に変更しましたが、この代入によって array_1 の最初の要素の値も 10 に変更されました。
array_2 = array_1 とすると、新しい配列を作成するのではなく、メモリ上の同じ配列への参照を作成しています。そのため、array_2 に加えた変更は array_1 にも影響します。
この問題を解決するには、array_2 = np.array([1, 2, 3]) と記述できますが、これでは同じコードを2回書くことになります。コーディングの重要な原則を思い出してください:同じことを繰り返さない。
ndarray.copy() メソッド
幸いにも、NumPy にはこの問題を解決するための ndarray.copy() メソッドが用意されています。
12345678import numpy as np array_1 = np.array([1, 2, 3]) # Copying the contents of array_1 array_2 = array_1.copy() # Setting the first element of array_2 to 10 array_2[0] = 10 print(f'Initial array: {array_1}') print(f'Modified copy: {array_2}')
これで、array_2 と同じ要素を持つ新しい配列 array_1 が作成されました。
2次元配列の場合も、コピー手順は全く同じ。
numpy.copy() 関数
.copy() メソッドの代わりに、配列をパラメータとして受け取る copy() 関数も使用可能:array_2 = np.copy(array_1)。
関数とメソッドは同じ動作をするが、1つだけ違いがある。どちらにも配列のメモリレイアウトを指定する order パラメータがあるが、デフォルト値が異なる。
下図は、課題で使用される sales_data_2021 配列の構造を示している。
スワイプしてコーディングを開始
あなたは、2021年の企業の四半期売上データを分析しています。このデータはNumPy配列sales_data_2021に保存されており、各行が特定の製品、各列がその製品の四半期ごとの売上を表しています。
- NumPy配列の適切なメソッドを使用して、
sales_data_2021のコピーを作成し、sales_data_2022に保存してください。 sales_data_2022の最初の行(ある製品の四半期売上)における最後の2つの要素を390と370に更新してください:- 行の指定には正のインデックスを使用してください;
- 最後の2つの要素のインデックス指定には、負の
start値のみを持つスライスを使用してください。
解答
フィードバックありがとうございます!
single
AIに質問する
AIに質問する
何でも質問するか、提案された質問の1つを試してチャットを始めてください