機械学習で必ず使う、Numpy。
ndarray, arrayなど混合してしまったり、Pythonのlist [a, b, c, d, e]とかと違うのか。
などなど、よく分からないことが多いと思います。
正確なことは、下記に詳細が記載されております。
分かりますでしょうか? 私は、全くわかりませんでした。
■numpy.ndarray
https://docs.scipy.org/doc/numpy/reference/generated/numpy.ndarray.html
■numpy.array
https://docs.scipy.org/doc/numpy/reference/generated/numpy.array.html
簡単に言いますと
ndarray:
Numpyの高次元配列を扱うことが可能なクラス
array:
ndarray のクラス型をしたオブジェクトをreturnする、関数
ということです。
全く、性質が異なるものですね。
詳しいことは、下記のサイトに色々と載ってます。
是非、一度見てみるといいと思います。
http://www.kamishima.net/mlmpyja/nbayes1/ndarray.html
arrayで生成するndarrayのオブジェクトと、Python配列のListは違うものなのでしょうか。実験してみましょう。
#listを準備 z = [ 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11] #ndarray型のオブジェクト生成 nz = np.array(z) print(nz) print(z)
#print(nz)
[ 0 1 2 3 4 5 6 7 8 9 10 11]
#print(z)
[0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11]
#print(nz)で出力した値は、ndarray型のオブジェクトです。
#print(z)で出力した値は、Pythonの配列 list、そのままです。
arrayの引数にデータ(z)を入れたことで、ndarray型のオブジェクトが出来上がりました。
確認してみましょう。
ndarray型のオブジェクトは、shape属性を持ちます。(配列の型を示す)
print(nz.shape) print(z.shape)
#print(nz.shape)
(12,)
#print(z.shape)
AttributeError: ‘list’ object has no attribute ‘shape’
あたりまえですね。
Pythonの配列 list は、shape属性を持ち合わせて無いということです。