[Python]asarray()とarray()の違い

python

asarray関数とarray関数はどちらも引数に指定したリストやタプルからnumpy配列を生成する関数です。

この2つにはどのよう違いがあるのかについて解説します。

スポンサーリンク

簡単な実行結果

インターフェース, インターネット, プログラム, ブラウザ, Www

まず、array関数とasarray関数の簡単な実行結果を見てみます。

import numpy as np

a = [1,2,3]

b = np.array(a)

c = np.asarray(a)

print(b)

print(c)

//[1 2 3]
//[1 2 3]

リストaに対しての実行結果は同じとなりました。

次にasarray関数とarray関数によって作ったそれぞれのNumpy配列のコピーを作ってコピーの要素を変えてみます。

まず、array関数の場合

import numpy as np

a = [1,2,3]

b = np.array(a)

b_copy = b

b_copy[0] = 2

print(b)
print(b_copy)

//[2 2 3]
//[2 2 3]

次にasarray関数の場合

import numpy as np

a = [1,2,3]

c = np.asarray(a)

c_copy = c

c_copy[0] = 2
print(c)
print(c_copy)

//[2 2 3]
//[2 2 3]

どちらもNumpy配列のコピーとコピー元が同期しています。

違い

プログラマー, プログラミング, コード, 仕事, コンピューター

ここまでは、同じ実行結果となりました。

これから、Numpy配列を別のNumpy配列に変換する場合の実行結果を見ていきます。

まず、array関数の場合

import numpy as np

a = [1,2,3]

b = np.array(a)

b_copy = np.array(b)

b_copy[0] = 2

print(b)
print(b_copy)

//[1 2 3]
//[2 2 3]

変換されたNumpy配列と変換元のNumpy配列は同期していないようです。

次にasarray関数の場合を見ていきます。

import numpy as np

a = [1,2,3]

c = np.asarray(a)

c_copy = np.asarray(c)

c_copy[0] = 2
print(c)
print(c_copy)

//[2 2 3]
//[2 2 3]

変換先のNumpy配列と変換元のNumpy配列が同期しています。

asarray関数とarray関数の違いはNumpy配列からNumpy配列に変換する場合に、元の配列と変換された配列が同期されるかしないかのようです。

まとめ

  • ・array関数とasarray関数の挙動は基本的には変わらない
  • ・Numpy配列からNumpy配列への変換をする際に、変換元と変換先での配列を同期するかしないかが違いとなる(arrayだと同期しない、asarrayだと同期する)

コメント

タイトルとURLをコピーしました