Notice: This page requires JavaScript to function properly.
Please enable JavaScript in your browser settings or update your browser.
学ぶ 配列のコピー | セクション
NumPyによる数値計算
セクション 1.  20
single

single

book配列のコピー

メニューを表示するにはスワイプしてください

元の配列に影響を与えずに変更を加えるために、配列のコピーを作成する必要がある場合がよくあります。

単純な代入

まず、array_2 = array_1 のように新しい変数を作成するだけではいけない理由について説明します。ここで、array_1 は元の配列です。

123456
import 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)
copy

array_2 の最初の要素の値を 10 に変更しましたが、この代入によって array_1 の最初の要素の値も 10 に変更されました。

Note
注意

array_2 = array_1 とすると、新しい配列を作成しているのではなく、メモリ上の同じ配列への参照を作成しています。そのため、array_2 に加えた変更は array_1 にも影響します。

この問題を解決するために array_2 = np.array([1, 2, 3]) と記述することもできますが、これでは同じコードを2回書くことになります。コーディングの重要な原則を思い出してください:同じことを繰り返さない

ndarray.copy() メソッド

幸いにも、NumPy にはこの問題を解決するための ndarray.copy() メソッドが用意されています。

12345678
import 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}')
copy

これで、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に保存されており、各行が特定の製品、各列がその製品の四半期ごとの売上を表しています。

  1. NumPy配列の適切なメソッドを使用して、sales_data_2021のコピーを作成し、sales_data_2022に保存してください。
  2. sales_data_2022最初の行(ある製品の四半期売上)における最後の2つの要素を390370に更新してください:
    • 行の指定には正のインデックスを使用します;
    • 最後の2つの要素のインデックスには、負のstart値のみを使ったスライスを使用します。

解答

Switch to desktop実践的な練習のためにデスクトップに切り替える下記のオプションのいずれかを利用して、現在の場所から続行する
すべて明確でしたか?

どのように改善できますか?

フィードバックありがとうございます!

セクション 1.  20
single

single

AIに質問する

expand

AIに質問する

ChatGPT

何でも質問するか、提案された質問の1つを試してチャットを始めてください

some-alt