/var/log/messages

debugging with sixth sense

NumPy 配列

shape て何? と思ってたら NumPy 配列の属性らしい。以下なものがあるようですが

  • ndarray.flags
  • ndarray.ndim
  • ndarray.size
  • ndarray.shape
  • ndarray.itemsize
  • ndarray.strides
  • ndarray.nbytes
  • ndarray.dtype

shape は各次元の要素数、とのこと。

実行環境にて試してみました。

1
2
3
4
5
6
>>> from NativeBayes1 import NativeBayes1
>>> import numpy as np
>>> data = np.genfromtxt('vote_filled.tsv', dtype=np.int)
>>> X = data[:, :-1]
>>> X.shape
(435, 16)

訓練事例数な X.shape[0] が 435 で特徴数 X.shape[1] が 16 な模様。あと、

1
2
>>> X = data[:, :-1]
>>> y = data[:, -1]

の意味が今一つすっと腑に落ちないというか。以下な理解で良いのかな。。

  • X に data の全ての行の最後の列までの全ての列を格納
  • y に data の全ての行の最後の列を格納

そもそも元データの意味合いが理解できていないあたりがタチ悪いですね。

もう少し

: 使うのはよくある模様。例えば以下?

1
2
>>> X[0, :]
array([0, 1, 0, 1, 1, 1, 0, 0, 0, 1, 0, 1, 1, 1, 0, 1])

最初の行の全ての列。

1
2
>>> X[0, :-1]
array([0, 1, 0, 1, 1, 1, 0, 0, 0, 1, 0, 1, 1, 1, 0])

こうすると最初の行の最初の列から一番最後の列の一つ前まで。

1
2
>>> X[0, -1:]
array([1])

こうすると最後の列のみ、なので

1
>>> X[0, -1]

でも一緒? と思ったらこうすると配列は戻されないのですね、成程。

もうひとつ

配列を引数として受け取って配列を戻す手続き、非常に面白い。

Comments