ndarrayオブジェクト

pythonで、まず2つのリストをつくる
a=[1,2,3]
b=[4,5,6]

aとbを掛けることが、できるのか。
print(a*b)

エラーになってしまう。
TypeErrorTraceback (most recent call last)
in ()
—-> 1 type(a*b)
TypeError: can’t multiply sequence by non-int of type ‘list’

ndarrayオブジェクトにリストを入れてみる。
import numpy as np
c=np.array([1,2,3])
d=np.array([4,5,6])

cとdを掛けることが、できるのか。
print(c*d)
[ 4 10 18]

OK〜

次に
e=c*dとする

print(e)
[ 4 10 18]

ndarrayオブジェクトには、型、次元数、サイズを調べるメソッド(アトリビュート?)が用意されている。


e.shape
(3,)

次元数
e.ndim
1

サイズ(要素数)
e.size
3

サイズ(要素数)は分かるが、e.shape(3,)と、e.ndim 1について、理解できない。

f=np.array([[1,2,3],[4,5,6]])としてみる。
print(f)
[[1 2 3]
[4 5 6]]

f.shape
(2, 3)

f.ndim
2

f.shape
(2,3)
は、
2列3行(2×3)が表現されている。

1行3列のようだ。ということで、先の(3,)は3列1行のようだ。(3,1)とは表現されないんだネ。           

=>(1,3)とは表現されず、1が省かれ(3,)と表現      

f.ndimは2次元。

[ 4 10 18] — 1次元

[[1 2 3]
[4 5 6]] — 2次元

では、
[[1,2,3]
[4,5,6]
[7,8,9」]
のような形を3次元と言うのか。

じっさいに、つくってみよう。

g=np.array([[1,2,3],[4,5,6],[7,8,9]])
g.ndim
2

お、2次元だ。

では、3次元とは..ググって、しらべてみたわ〜

h=np.array([[[1,2,3],[4,5,6],[7,8,9]],[[1,2,3],[4,5,6],[7,8,9]]])

print(h)

[[[1 2 3]
[4 5 6]
[7 8 9]]

[[1 2 3]
[4 5 6]
[7 8 9]]]

h.ndim

3

お〜、3次元〜 

dir()関数

pythonでクラスをつくる。アトリビュートの概念がわかってくる。文を読むだけでなく、手を動かすことで初めて分かる収穫だと思う。

「もしかしたら、メソッドもアトリビュートではないか」と思ったり、dir()でオブジェクトのアトリビュート一覧が見れるのは痛快だ。

1や”a”のような値がオブジェクトであるのは知っていた。さらにdir()にて、そのアトリビュートが一覧できたのは、ちょっとした感動〜。

for文の動き

pythonのfor文の動きを、たしかめてみた。たぶん、これでいいとおもう。

arr=[1,2,3]
for i in arr:
print(i)
1
2
3

この動きを、たしかめたい。

j=iter([1,2,3])
next(j)
1
next(j)
2
next(j)
3
next(j)
StopIteration: //例外処理が行われ、ここで動作がストップする。